harbor基于keepalive高可用部署

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了harbor基于keepalive高可用部署相关的知识,希望对你有一定的参考价值。

6.Harbor配置
6.1.harbor01节点
1.修改harbor.cfg
cat >/root/harbor/harbor.cfg <<-‘EOF‘
_version = 1.5.0
hostname = reg.xgmin.com
ui_url_protocol = https
max_job_workers = 50
customize_crt = off
ssl_cert = /data/cert/reg.xgmin.com.crt
ssl_cert_key = /data/cert/reg.xgmin.com.key
secretkey_path = /data
admiral_url = NA
log_rotate_count = 50
log_rotate_size = 200M

http_proxy =
https_proxy =
no_proxy = 127.0.0.1,localhost,ui

email_identity =
email_server = smtp.mydomain.com
email_server_port = 25
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false
email_insecure = false

harbor_admin_password = Harbor12345

auth_mode = db_auth
ldap_url = ldaps://ldap.mydomain.com
ldap_basedn = ou=people,dc=mydomain,dc=com
ldap_uid = uid
ldap_scope = 2
ldap_timeout = 5
ldap_verify_cert = true
ldap_group_basedn = ou=group,dc=mydomain,dc=com
ldap_group_filter = objectclass=group
ldap_group_gid = cn
ldap_group_scope = 2
self_registration = off
token_expiration = 30
project_creation_restriction = everyone

db_host = 10.7.132.243
db_password = Wab1IJvdHurMbPUp
db_port = 3306
db_user = root

redis_url = 10.7.132.243:6379

clair_db_host = 10.7.132.243
clair_db_password = bXTCUL5BIz5a4liM
clair_db_port = 5432
clair_db_username = postgres
clair_db = postgres

uaa_endpoint = uaa.mydomain.org
uaa_clientid = id
uaa_clientsecret = secret
uaa_verify_cert = true
uaa_ca_cert = /path/to/ca.pem

#registry_storage_provider_name = filesystem
#registry_storage_provider_config =

registry_storage_provider_name = s3
registry_storage_provider_config = accesskey: NCGOJZXAHDJIIDBYUFKD,secretkey: c8d0v3ENh5ZlgSOMjd0oaLvZZSdITjkjDsmwKxbS,region: yzqsp1,regionendpoint: http://s3.yzqsp1.stor.qycloud.com,bucket: ghqharbortest,secure: false
EOF
2.拷贝证书到/etc/docker和/data/cert
mkdir -p /data/cert
cp /root/cert/reg.xgmin.com.crt /root/cert/reg.xgmin.com.key /data/cert/

cd /root/harbor/ && ./prepare --ha
mkdir -p /etc/docker/certs.d/reg.xgmin.com
cp /root/cert/reg.xgmin.com.crt /etc/docker/certs.d/reg.xgmin.com/
ll /etc/docker/certs.d/reg.xgmin.com/

systemctl restart docker
3.执行安装
./install.sh --ha
4.出现下方提示后,浏览器访问https://10.7.132.243
? ----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at https://reg.xgmin.com.
For more details, please visit https://github.com/vmware/harbor .
5.输入默认用户名密码登录成功后在操作keepalived

6.2.harbor02节点
1.修改harbor.cfg
cat >/root/harbor/harbor.cfg <<-‘EOF‘
_version = 1.5.0
hostname = reg.xgmin.com
ui_url_protocol = https
max_job_workers = 50
customize_crt = off
ssl_cert = /data/cert/reg.xgmin.com.crt
ssl_cert_key = /data/cert/reg.xgmin.com.key
secretkey_path = /data
admiral_url = NA
log_rotate_count = 50
log_rotate_size = 200M

http_proxy =
https_proxy =
no_proxy = 127.0.0.1,localhost,ui

email_identity =
email_server = smtp.mydomain.com
email_server_port = 25
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false
email_insecure = false

harbor_admin_password = Harbor12345

auth_mode = db_auth
ldap_url = ldaps://ldap.mydomain.com
ldap_basedn = ou=people,dc=mydomain,dc=com
ldap_uid = uid
ldap_scope = 2
ldap_timeout = 5
ldap_verify_cert = true
ldap_group_basedn = ou=group,dc=mydomain,dc=com
ldap_group_filter = objectclass=group
ldap_group_gid = cn
ldap_group_scope = 2
self_registration = off
token_expiration = 30
project_creation_restriction = everyone

db_host = 10.7.132.243
db_password = Wab1IJvdHurMbPUp
db_port = 3306
db_user = root

redis_url = 10.7.132.243:6379

clair_db_host = 10.7.132.243
clair_db_password = bXTCUL5BIz5a4liM
clair_db_port = 5432
clair_db_username = postgres
clair_db = postgres

uaa_endpoint = uaa.mydomain.org
uaa_clientid = id
uaa_clientsecret = secret
uaa_verify_cert = true
uaa_ca_cert = /path/to/ca.pem

#registry_storage_provider_name = filesystem
#registry_storage_provider_config =

registry_storage_provider_name = s3
registry_storage_provider_config = accesskey: NCGOJZXAHDJIIDBYUFKD,secretkey: c8d0v3ENh5ZlgSOMjd0oaLvZZSdITjkjDsmwKxbS,region: yzqsp1,regionendpoint: http://s3.yzqsp1.stor.qycloud.com,bucket: ghqharbortest,secure: false
EOF
2.拷贝证书到/etc/docker和/data/cert
mkdir -p /data/cert
cp /root/cert/reg.xgmin.com.crt /root/cert/reg.xgmin.com.key /data/cert/

cd /root/harbor/ && ./prepare --ha
mkdir -p /etc/docker/certs.d/reg.xgmin.com
cp /root/cert/reg.xgmin.com.crt /etc/docker/certs.d/reg.xgmin.com/
ll /etc/docker/certs.d/reg.xgmin.com/

systemctl restart docker
3.执行安装
./install.sh --ha
4.出现下方提示后,浏览器访问https://10.7.132.219
? ----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at https://reg.xgmin.com.
For more details, please visit https://github.com/vmware/harbor .
5.输入默认用户名密码登录成功后在操作keepalived
7.Keepalived配置
7.1.Master节点设置
1.在harbor01上写入keepalived的master配置文件
yum install keepalived -y
tee > /etc/keepalived/keepalived.conf <<-‘EOF‘
global_defs {
router_id harbar_ha
}

vrrp_script chk_nginx_proxy {
script "/etc/keepalived/scripts/nginx_check.sh"
interval 2
weight -20
}

vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 67
priority 151
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 431953
}
virtual_ipaddress {
10.7.132.253/24
}
track_script {
chk_nginx_proxy
}
}
EOF
2.增加keepalived检查脚本
mkdir -p /etc/keepalived/scripts/
tee > /etc/keepalived/scripts/nginx_check.sh <<-‘EOF‘
#!/bin/bash
nginxpid=ps -C nginx --no-header | wc -l
if [ $nginxpid -eq 0 ];then
systemctl stop keepalived
fi
EOF

chmod +x /etc/keepalived/scripts/nginx_check.sh
3.启动keepalived,
systemctl restart keepalived
systemctl enable keepalived
systemctl status keepalived
7.2.Backup节点设置
1.在harbor02上写入keepalived的backup配置文件
yum install keepalived -y
tee > /etc/keepalived/keepalived.conf <<-‘EOF‘
global_defs {
router_id harbar_ha
}

vrrp_script chk_nginx_proxy {
script "/etc/keepalived/scripts/nginx_check.sh"
interval 2
weight -20
}

vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 67
priority 101
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 431953
}
virtual_ipaddress {
10.7.132.253/24
}
track_script {
chk_nginx_proxy
}
}
EOF

2.增加keepalived检查脚本

mkdir -p /etc/keepalived/scripts/
tee > /etc/keepalived/scripts/nginx_check.sh <<-‘EOF‘
#!/bin/bash
nginxpid=ps -C nginx --no-header | wc -l
if [ $nginxpid -eq 0 ];then
systemctl stop keepalived
fi
EOF

chmod +x /etc/keepalived/scripts/nginx_check.sh
3.启动keepalived,
systemctl restart keepalived
systemctl enable keepalived
systemctl status keepalived
7.3.检查keepalived状态
1.harbor01节点查看
[root@harbor01 ~]# ip a | grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 10.7.132.243/24 brd 10.7.132.255 scope global dynamic eth0
inet 10.7.132.253/24 scope global secondary eth0:vip
1.harbor02节点查看
[root@harbor02 ~]# ip a | grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 10.7.132.219/24 brd 10.7.132.255 scope global dynamic eth0

8.检查测试
8.1.push镜像
1.到harbor01节点登录docker镜像仓库
[root@harbor01 ~]# docker login reg.xgmin.com
Username: admin
Password: Harbor12345
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

2.打tage并提交测试

[root@harbor01 ~]# docker tag photon:1.0 reg.xgmin.com/library/xgmintest:v1
[root@harbor01 ~]# docker push reg.xgmin.com/library/xgmintest:v1
The push refers to repository [reg.xgmin.com/library/xgmintest]
ad50e89f4922: Pushed
v1: digest: sha256:2336c23b341da8853d48f5e9234c1f3fa914db2acc773996fb0fbde33e57bb1c size: 529
8.2.web检查
登录reg.xgmin.com 查看我们上传的镜像

8.3.s3fs检查
此测试方式,是查看镜像是否存储到青云的s3对象存储上
1.安装s3fs
yum install s3fs-fuse -y
2.配置s3fs秘钥
mkdir -p /root/.s3fs/
cat > /root/.s3fs/credentials <<-‘EOF‘
NCGOJZXAHDJIIDBYUFKD:c8d0v3ENh5ZlgSOMjd0oaLvZZSdITjkjDsmwKxbS
EOF
chmod 600 /root/.s3fs/credentials
3.挂载s3fs
mkdir -p /mnt/mybucket-test
s3fs ghqharbortest /mnt/mybucket-test -o passwd_file=/root/.s3fs/credentials -o url=http://s3.yzqsp1.stor.qycloud.com
df -T | grep s3fs
4.查看上传的镜像
[root@harbor01 ~]# cd /mnt/mybucket-test/docker/
[root@harbor01 docker]# ll
总用量 1
drwxr-x--- 1 root root 0 1月 1 1970 registry
[root@harbor01 docker]# du -sh *
120M registry
[root@harbor01 docker]# tree
.
└── registry
└── v2
├── blobs
│?? └── sha256
│?? ├── 03
│?? │?? └── 03c1901c3cd5f7adfb65adaaee73428532a9571b794e17ef1677da667f80b1b5
│?? │?? └── data
│?? ├── 0d
│?? │?? └── 0dbcca2a156e7892be1414f91bac289595fdf210cebe315f733d72720efa89c1
│?? │?? └── data
│?? ├── 13
│?? │?? └── 13ae381fcfc572185c3ff094419c15ce493965a009e0997448d0214b0354cd47
│?? │?? └── data
│?? ├── 18
│?? │?? └── 18ceb72f6a2dbae1371887defb26620fd28ac989ec567a4d584ef965ee60eb52
│?? │?? └── data
│?? ├── 1f
│?? │?? └── 1fe4320e9ed89b03f0b3158a4336ceb08fcb44d949d84522b9688089617096ff
│?? │?? └── data
│?? ├── 23
│?? │?? └── 2336c23b341da8853d48f5e9234c1f3fa914db2acc773996fb0fbde33e57bb1c
│?? │?? └── data
8.4.客户端测试
1.找一台新的docker客户端进行拉取镜像测试,首先安装docker
yum install docker-ce -y
2.增加docker配置
mkdir -p /etc/docker
tee > /etc/docker/daemon.json <<-‘EOF‘
{
"registry-mirrors": ["https://reg.xgmin.com"]
}
EOF

cat >> /etc/hosts <<-‘EOF‘
10.7.132.253 reg.xgmin.com
EOF
3.配置docker使用指定目录和免https认证
#vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --graph=/app/docker --storage-driver=overlay --insecure-registry=reg.xgmin.com
4.重启docker
systemctl daemon-reload && systemctl restart docker
5.拉取镜像
[root@i-7qd2o33x ~]# docker pull reg.xgmin.com/library/xgmintest:v1
v1: Pulling from library/xgmintest
5efd2aef02cd: Pull complete
Digest: sha256:2336c23b341da8853d48f5e9234c1f3fa914db2acc773996fb0fbde33e57bb1c
Status: Downloaded newer image for reg.xgmin.com/library/xgmintest:v1

以上是关于harbor基于keepalive高可用部署的主要内容,如果未能解决你的问题,请参考以下文章

Harbor高可用集群设计及部署(实操+视频),基于离线安装方式

基于共享存储的Harbor高可用-Docker部署方案

基于共享存储的Harbor高可用-Docker部署方案

swarm 部署高可用harbor

镜像仓库Harbor私服高可用策略分析及部署

k8s部署-19-harbor高可用部署