范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

生产级harbor可用的搭建

  Harbor简介
  Harbor是一个用于存储和分发 Docker镜像 的企业级Registry 服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。
  作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。
  提升用户使用Registry构建和运行环境传输镜像的效率。
  Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。
  另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。  高可用架构:双主复制
  主从同步
  harbor官方默认提供主从复制的方案来解决镜像同步问题,通过复制的方式,我们可以实时将测试环境harbor仓库的镜像同步到生产环境harbor,类似于如下流程:
  img
  在实际生产运维的中,往往需要把镜像发布到几十或上百台集群节点上。这时,单个Registry已经无法满足大量节点的下载需求,因此要配置多个Registry实例做负载均衡。手工维护多个Registry实例上的镜像,将是十分繁琐的事情。Harbor可以支持一主多从的镜像发布模式,可以解决大规模镜像发布的难题:
  只要往一台Harbor上发布,镜像就会像"仙女散花"般地同步到多个Registry中,高效可靠。
  如果是地域分布较广的集群,还可以采用层次型发布方式,比如从集团总部机房同步到分公司1机房,再从分公司1机房同步到分公司2机房:
  然而单靠主从同步,仍然解决不了harbor主节点的单点问题。
  双主复制说明
  所谓的双主复制其实就是复用主从同步实现两个harbor节点之间的双向同步,来保证数据的一致性,然后在两台harbor前端顶一个负载均衡器将进来的请求分流到不同的实例中去,只要有一个实例中有了新的镜像,就是自动的同步复制到另外的的实例中去,这样实现了负载均衡,也避免了单点故障,在一定程度上实现了Harbor的高可用性:
  这个方案有一个问题就是有可能两个Harbor实例中的数据不一致。假设如果一个实例A挂掉了,这个时候有新的镜像进来,那么新的镜像就会在另外一个实例B中,后面即使恢复了挂掉的A实例,Harbor实例B也不会自动去同步镜像,这样只能手动的先关掉Harbor实例B的复制策略,然后再开启复制策略,才能让实例B数据同步,让两个实例的数据一致。
  另外,这里还需要多吐槽一句: 在实际生产使用中,主从复制十分的不靠谱!!所以这里推荐使用下面要说的这种方案 。 高可用架构:多实例共享后端存储
  方案说明
  共享后端存储算是一种比较标准的方案,就是多个Harbor实例共享同一个后端存储,任何一个实例持久化到存储的镜像,都可被其他实例中读取。通过前置LB进来的请求,可以分流到不同的实例中去处理,这样就实现了负载均衡,也避免了单点故障。
  本次搭建以NFS作为共享存储存放Harbor相关data,并分离PostgreSQL与Redis为多个Harbor共同连接使用,使用Nginx做负载均衡。
  如果最终生产环境集群中服务器较多,依赖做完LB的Harbor也无法完全达到需求时,可以使用如下架构,部署下级Harbor节点从主节点同步镜像,然后再分发给生产服务器。
  这个方案在实际生产环境中部署需要考虑三个问题:
  1.  共享存储的选取,Harbor的后端存储目前支持AWS S3、Openstack Swift, Ceph等,在下面的实验环境里,暂且直接使用nfs。
  2.  Session在不同的实例上共享,这个现在其实已经不是问题了,在最新的harbor中,默认session会存放在redis中,只需要将redis独立出来即可。可以通过redis sentinel或者redis cluster等方式来保证redis的可用性。在下面的实验环境里,暂且使用单台redis。
  3.  Harbor多实例数据库问题,这个也只需要将harbor中的数据库拆出来独立部署即可。让多实例共用一个外部数据库,数据库的高可用也可以通过数据库的高可用方案保证。
  环境说明操作系统: CentOS 7.6 演示环境软件版本
  多实例共享后端存储部署
  Docker
  1)安装依赖包:  yum install -y yum-utils    device-mapper-persistent-data    lvm2
  2)官方一键脚本安装  curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh --mirror Aliyun
  3)添加内核参数  tee -a /etc/sysctl.conf <<-EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
  将 net.ipv4.ip_forward 赋值为1
  然后刷新内核参数  sysctl -p
  4)修改Docker仓库为国内镜像站  curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s https://pclhthp0.mirror.aliyuncs.com
  5)启动Docker  systemctl enable docker && systemctl start docker
  Compose
  compose是Docker提供的一个命令行工具,用来定义和运行由多个容器组成的应用。使用compose,我们可以通过YAML文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建和启动。
  由于国内政策原因,可能在海外网站上下载文件速度较慢,建议下载本地后上传至服务器
  1)下载 docker-compose 并赋予可执行权限 # curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose # chmod +x /usr/local/bin/docker-composecd /usr/local/bin scp 192.168.166.96:/usr/local/bin/docker-compose .
  注意:由于我其他服务器已经存在,所以我直接拷贝了
  2)安装bash补全命令  # curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-composescp 192.168.166.96:/etc/bash_completion.d/docker-compose /etc/bash_completion.d/
  重新连接终端即生效
  注意:由于我其他服务器已经存在,所以我直接拷贝了NFS
  服务端
  1)安装必需的RPM包  yum -y install nfs-utils rpcbind
  2)创建NFS共享目录  mkdir -p /data/harbor_data chown nobody:nobody /data/harbor_data/
  3)修改NFS服务配置文件  echo "/data/harbor_data 192.168.166.0/24(rw,sync,no_root_squash)"  >> /etc/exports
  4)启动NFS服务器  systemctl enable rpcbind && systemctl restart rpcbind systemctl enable nfs && systemctl restart nfs
  客户端
  1)安装nfs-utils  yum -y install nfs-utils
  2)在NFS客户端上查看NFS的连通性  # showmount -e 192.168.166.122 Export list for 192.168.166.122: /data/harbor_data 192.168.166.0/24
  3)挂载NFS共享存储
  创建挂载目录  mkdir /data
  修改/etc/fstab配置文件加入以下内容  192.168.166.122:/data/harbor_data  /data  nfs defaults 0 0
  mount挂载  mount -aPostgreSQL
  1)下载PostgreSQL官方YUM源配置文件包并安装  wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm rpm -ivh pgdg-redhat-repo-latest.noarch.rpm
  2)安装PostgreSQL  yum  -y install postgresql96-server postgresql96-contrib
  3)初始化数据库  /usr/pgsql-9.6/bin/postgresql96-setup initdb
  4)启动数据库  systemctl enable postgresql-9.6 && systemctl restart postgresql-9.6
  5)PostgreSQL数据库配置  修改密码 # su - postgres -bash-4.2$ psql psql (9.6.17) Type "help" for help. postgres=# ALTER USER postgres WITH PASSWORD "postgres"; ALTER ROLE
  2、开启远程访问 vi /var/lib/pgsql/9.6/data/postgresql.conf  # listen_addresses = "localhost" 改为 listen_addresses="*"
  3、信任远程连接
  vim /var/lib/pgsql/9.6/data/pg_hba.conf
  加入:  host    all  all  192.168.166.203/32 trust host    all  all  192.168.166.81/32 trust host    all  all  192.168.166.212/32 trust
  6)重启PostgreSQL服务  systemctl restart postgresql-9.6
  7)验证服务  psql -h 192.168.166.203 -p 5432 -U postgres
  8)迁移数据库  在postgresql所在服务器,先启动一套harbor环境
  简要步骤如下:  # yum install -y yum-utils   device-mapper-persistent-data   lvm2 # curl -fsSL get.docker.com -o get-docker.sh # sh get-docker.sh --mirror Aliyun #curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s https://pclhthp0.mirror.aliyuncs.com # systemctl enable docker && systemctl start docker # cd /usr/local/bin # scp 192.168.166.96:/usr/local/bin/docker-compose . # scp 192.168.166.96:/etc/bash_completion.d/docker-compose /etc/bash_completion.d/ # cd ~ # scp 192.168.166.96:/root/harbor-offline-installer-v1.10.2.tgz . # tar -xvf harbor-offline-installer-v1.10.2.tgz -C /usr/local/ # cd /usr/local/harbor/ # vim harbor.yml ###修改hostname: 192.168.166.203  ####注释掉https段即可 # ./prepare  # ./install.sh  # docker-compose up -d
  2、进入harbor-db容器导出相关表及数据 # docker container exec -it harbor-db /bin/bash pg_dump -U postgres registry > /tmp/registry.sql  pg_dump -U postgres notarysigner > /tmp/notarysigner.sql   pg_dump -U postgres notaryserver > /tmp/notaryserver.sql
  3、导出数据库 docker container cp harbor-db:/tmp/registry.sql /tmp docker container cp harbor-db:/tmp/notarysigner.sql /tmp docker container cp harbor-db:/tmp/notaryserver.sql /tmp
  4、将数据导入至外部PostgreSQL数据库 # psql -h 192.168.166.203 -U postgres postgres=# create database registry; CREATE DATABASE postgres=# create database notarysigner; CREATE DATABASE postgres=# create database notaryserver; CREATE DATABASEpsql -h 192.168.166.203 -U postgres registry < /tmp/registry.sql psql -h 192.168.166.203 -U postgres notarysigner  < /tmp/notarysigner.sql psql -h 192.168.166.203 -U postgres notaryserver < /tmp/notaryserver.sqlRedis
  1)安装redis  yum -y install redis
  2) 修改配置参数  sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /etc/redis.conf    sed -i "s/daemonize no/daemonize yes/g" /etc/redis.conf
  3)启动并测试redis连接  systemctl enable redis && systemctl restart redis redis-cli Harbor
  下载Harbor离线安装包,离线安装包文件较大(约为:590M),建议在本地使用多线程工具下载后上传服务器使用。
  1)下载  cd ~ scp 192.168.166.96:/root/harbor-offline-installer-v1.10.2.tgz .
  2)解压  tar -xvf harbor-offline-installer-v1.10.2.tgz -C /usr/local/
  3)修改配置文件  # cd /usr/local/harbor/ # vim harbor.yml
  修改的内容有  hostname 修改为本机ip注释掉https 修改harbor默认的admin账号密码 数据存储位置,改为nfs挂载目录,因为我们本来就挂载到了 /data 目录下,所以不用动注释掉 database 注释掉 clair 打开 external_database 和external_redis 块的注释,并改为刚刚部署的地址
  修改完的样例文件,如下  hostname: 192.168.166.81 http:   port: 80 harbor_admin_password: Harbor12345 data_volume: /data jobservice:   max_job_workers: 10 notification:   webhook_job_max_retry: 10 chart:   absolute_url: disabled log:   level: info   local:     rotate_count: 50     rotate_size: 200M     location: /var/log/harbor _version: 1.10.0 external_database:   harbor:     host: 192.168.166.203     port: 5432     db_name: registry     username: postgres     password: postgres     ssl_mode: disable     max_idle_conns: 2     max_open_conns: 0   clair:     host: 192.168.166.203     port: 5432     db_name: clair     username: postgres     password: postgres     ssl_mode: disable   notary_signer:     host: 192.168.166.203     port: 5432     db_name: notarysigner     username: postgres     password: postgres     ssl_mode: disable   notary_server:     host: 192.168.166.203     port: 5432     db_name: notaryserver     username: postgres     password: postgres     ssl_mode: disable external_redis:   host: 192.168.166.245   port: 6379   password:   registry_db_index: 1   jobservice_db_index: 2   chartmuseum_db_index: 3   clair_db_index: 4 proxy:   http_proxy:   https_proxy:   no_proxy:   components:     - core     - jobservice     - clair
  4)生成harbor运行的必要文件(环境)以及 docker-compose.yml 文件;执行后会通过网络获取Docker Image,建议提前修改好国内镜像站加速。  ./prepare
  5)安装Harbor  ./install.sh Nginx
  1)安装nginx
  安装可以参考https://wiki.clay-wangzhi.com/7-nginx/1.-chu-shi-nginx#4-bian-yi-an-zhuang-nginx
  这里我就不再详细讲了
  2)编写配置文件  # cat harbor.schengle.com.conf  upstream harbor {     ip_hash;     server 192.168.166.81:80;     server 192.168.166.212:80; } server {     listen       80;     server_name  harbor.***.com;     rewrite ^(.*) https://$server_name$1 permanent; } server {     listen  443 ssl;     server_name harbor.schengle.com;          ssl_certificate ***.crt;     ssl_certificate_key ***.key;     client_max_body_size 0;     chunked_transfer_encoding on;      location / {         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         #proxy_set_header Host $host;         proxy_set_header X-Forwarded-Proto https;         proxy_redirect off;         proxy_ssl_verify off;         proxy_ssl_session_reuse on;         proxy_pass http://harbor; 		proxy_redirect default;         proxy_http_version 1.1; }     location /v2/ {         proxy_pass http://harbor/v2/; 		proxy_redirect default;         #proxy_set_header Host $host;         proxy_set_header X-Real-IP $remote_addr;         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         proxy_set_header X-Forwarded-Proto $scheme;         proxy_ssl_verify off;         proxy_ssl_session_reuse on;         proxy_buffering off;         proxy_request_buffering off;     } }
  3)平滑重启nginx  nginx -s reload参考文章https://www.cnblogs.com/kevingrace/p/11422710.html
  https://juejin.im/post/5d973e246fb9a04dfa0963fb#heading-18
  http://dwz-9.cn/_L4me
  篇幅有限,关于生产级harbor可用的搭建就介绍到这了,大家感兴趣也可以自己测试一下。
  后面会分享更多运维方面内容,感兴趣的朋友可以关注下!

新手走向高手须掌握的Linux终端技巧快捷键Tab命令补全Ctrlc结束程序,但不终止终端Ctrla将光标移至输入行首,相当于Home键Ctrle将光标移至输入行末,相当于End键Ctrlk删除从光标所在位置到行末CtCyberTruck发布会曾演示失败,特斯拉公布防弹玻璃新专利IT之家5月31日消息据外媒TechTimes报道,特斯拉在近日披露了用于特斯拉电动皮卡上的防弹玻璃的新专利。该专利显示,电动皮卡的防弹玻璃采用新型多层玻璃堆结构,在2焦耳的冲击力iPhone13全新消息曝光,4000mAh120Hz高刷,还有40W快充很快就要到6月了,苹果已经确定了在6月举办WWDC开发者大会,届时将有可能发布全新的iOS15系统,而大众最关心的,自然还是iPhone13系列的相关消息了。目前,外媒再次曝光了i曙光!半导体材料开启国产替代元年!围堵下的中国芯提速了美国最近两年对中国的芯片产业极度打压,无论是华为还是中芯国际都多少受到冲击。这么做的目的也很明显,就是为了让中国的芯片技术被西方压制,让中国一直在半导体芯片上被卡脖子。只不过,中国浩祥科普什么是B端互联网的新存储体系?什么是B端互联网的新存储体系?(1)是信息基建(包括服务器IDC和存储等)(2)是网络安全,包括等保2。0带来的态势感知等新方向(3)互联网流量端和SaaS云化软件站在这个时点上,面板巨头京东方直接出手交互商用大屏这背后意图何在?据奥维云网统计,交互式液晶大屏在过去的2018年不仅在教育市场继续挤压投影产品的空间,而且在商务会议市场也是表现强势,成绩非常出众。2018年会议平板市场进入井喷期,市场销量规模将系统架构如何升级到https?一个脚本帮你搞定,且永久免费现在很多站长都会考虑将自己的站点从http升级到https,不仅是基于安全的考虑,有的也是因为第三方平台的限制,如谷歌浏览器会将http站点标记为不安全的站点,微信平台要求接入的微国内首份自动驾驶路测报告8车企跑15万公里未出事故日前,中国首份自动驾驶路测报告,由北京市交通委公安交通管理局经济和信息化局正式对外发布。在这份名为北京市自动驾驶车辆道路测2018年度工作报告的文件中,北京自动驾驶管理小组披露了8ToB领域风起云涌,中国创业进入下半场,残酷厮杀早有定数?如果用简单的行业术语来定义ToB和ToC,ToB就是面向企业推出的服务,ToC就是面向个人消费者推出的服务,两者付费客户的群体是截然不同的。C端市场的兴起归功于中国庞大的人口基数红锐龙2600平台用完之后,我是不打算再购买英特尔的处理器了本来很早就打算购买英特尔家的8700K处理器了,因为我手里之前为了体验RGB编程功能,特意购买了一块微星的Z370主板。但是很不巧,原以为8700K散片能降到2000元以下,没想到这项只有中国才拥有的专利,或将引领全球未来10年的厨房变革。近几年,科学技术发展日新月异,在各种新兴行业兴起的同时,也有一些科创公司深耕传统行业,为传统行业注入新鲜血液,甚至有可能实现大换血。智能厨房虚拟图厨房电器就是一个较为典型的传统行业
匿名数据一定匿名吗?最新研究称互动数据或可长期识别匿名个体中新网北京1月26日电(记者孙自法)匿名数据一定匿名吗?施普林格自然旗下学术期刊自然通讯最新发表一篇技术论文指出,匿名数据也不那么匿名人际互动数据或可长期用来识别匿名数据集中个体的2022年VMware七大网络安全预测过去的一年中,网络安全受到了高度关注,无论是对于私营企业还是公共机构,人们都在将目光聚焦于更高级的安全策略。前不久的Log4j漏洞事件,进一步揭示了全球数字基础架构的脆弱性。除此之恒腾网络(00136)拟溢价约9。17向腾讯控股(00700)及刘学恒合共发行1。2亿股净筹约3亿港元智通财经APP讯,恒腾网络(00136)公布,于2022年1月25日,该公司拟向腾讯控股(00700)的全资附属公司WaterLily及刘学恒分别发行6400万股及5600万股认购微信2021年小程序实物商品商家自营GMV增长达100鞭牛士1月26日消息,微信小程序团队发布零售方面成绩单2021年,小程序实物商品商家自营GMV增长达100,众多垂直领域保持了高增长态势。其中在快消领域,过去一年,超过100家头部亚利桑那州法官裁定对谷歌(GOOG。US)位置跟踪功能涉嫌欺骗用户指控由陪审团判决智通财经APP获悉,亚利桑那州法官周二驳回了该州总检察长提起的诉讼,裁定对谷歌(GOOG。US)在智能手机位置跟踪设置不明确情况下欺骗用户的指控应该由陪审团来判决。谷歌曾寻求即决判谷歌再次推出新系统Topics,欲解决用户隐私问题雷峰网消息谷歌周二发布了一项名为Topics的新技术,目的是为了平衡网络广告和保护用户隐私两者之间的关系。谷歌计划在未来几周内开始测试这种方法,以取代此前Chrome浏览器中的第三华为P60Pro渲染图2亿像素4摄屏下相机,吞下苹果重回巅峰高通骁龙8Gen1处理器的发布,表明了手机处理器又前进了一个新的时代,正式跨入4纳米工艺制造芯片的时代。就在国产手机厂商纷纷表示,将会发布搭载高通骁龙8Gen1处理器的旗舰手机时,未来两年,苹果或将发布两款新iPhoneSE果粉之家,专业苹果手机技术研究十年!您身边的苹果专家今年的第一场秋季发布会,苹果推出四款型号的iPhone13,其中包括定位为小屏版的iPhone13mini!在当前的市场上,大屏对苹果推出什么样的元宇宙充满期待记者在采访时发现,无论是专家学者产业链上下游企业还是产业分析师,对苹果即将推出AR硬件这一新闻,鲜有唱衰者,人们都对苹果能推出怎样的元宇宙产品充满期待。距离2016年的VR元年已经Q2手机保值率top10苹果独占6款,华为小米上榜任何产品都有自己的生命周期,而在有限的生命周期内,如何保持产品的市场竞争力,和它的保值率就有很大的关系了。对于更新换代极快的手机产品来说,消费者尤为看重其保值率。说到手机保值率高的华为出货量暴跌之后,苹果横扫国产手机厂商,逆袭成国内第一在国内有一句谚语叫做山中无老虎,猴子称大王。据市场研究机构canalys的数据显示,2019年第4季度,华为手机的出货量达到了3330万台,国内市场占有率高达39,成为国内市场毫无