- 全新安装两台harbor,但不要着急执行
./install
(若是用旧的要清理下数据)- 要作Harbor高可用,咱们须要准备一台NFS服务器共享2台harbor的数据存储目录,在生产环境中,咱们能够选则Ceph或者Glusterfs
- 咱们须要一台Postgres数据库给Harbor的clair漏洞扫描组件使用
- 咱们须要一台MySQL数据库给Harbor使用
- 咱们须要一台redis数据库给session使用
主机 | IP | 用途 | VIP |
---|---|---|---|
harbor-master | 192.168.200.70 | Harbor镜像仓库-主 | 192.168.200.244 |
harbor-slave | 192.168.200.109 | Harbor镜像仓库-备 | |
dns-nfs | 192.168.200.1110 | DNS服务器和NFS服务器端(harbor HA文件存储) |
为了省事儿把nfs服务端装在DNS服务器上mysql
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.confweb
sysctl -predis
mkdir -p /data/nfssql
yum -y install nfs-utilsdocker
vim /etc/exports数据库
cat /etc/exportsvim
/data/nfs 192.168.200.0/24(rw,no_root_squash)
#默认root用户存的东西不降权
systemctl start nfscentos
yum -y install nfs-utils浏览器
mkdir -p /data/storage服务器
mount 192.168.200.110:/data/nfs /data/storage
df -hT | grep /data/nfs
docker pull redis:alpine
docker images
docker run -dit --name redis_test -p 6379:6379 redis:alpine
docker ps -a
docker pull postgres
docker images
docker run -dit --name postgres_test -p 5432:5432 -e POSTGRES_PASSWORD=123123 postgres
docker ps -a
docker pull mysql:5.6
docker images
docker run -dit --name mysql_test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123123 mysql:5.6 --character-set-server=utf8
docker ps -a
docker ps -a
docker rename postgres_test clair_db
docker rename mysql_test harbor_db
docker rename redis_test session
docker ps -a
cd /data/install/harbor
ls
tree ha
ha
├── docker-compose.clair.tpl
├── docker-compose.clair.yml
├── docker-compose.tpl
├── docker-compose.yml #须要修改的配置文件
├── registry.sql #须要导入的mysql表格
└── sample
├── active_active
│ ├── check.sh
│ └── keepalived_active_active.conf
└── active_standby
├── check_harbor.sh
└── keepalived_active_standby.conf
3 directories, 9 files
yum -y install mysql
which mysql
mysql -uroot -p123123 -h192.168.200.110 -P3306
show databases;
source ha/registry.sql
show databases;
Specified key was too long; max key length is 767 bytes
这是由于导入的表格创建的索引超过mysql默认上线767bytes >=254 所以咱们须要修改导入的表
cat -n ha/registry.sql | sed -n '220p;291p'
220 repository varchar(256) NOT NULL, #将256改为254
291 resource_name varchar(256), #将256改为254
#改完以后在进行表格导入就不会报错了
vim ha/registry.sql
cat -n ha/registry.sql | sed -n '220p;291p'
mysql -uroot -p123123 -h192.168.200.110 -P3306
show databases;
source ha/registry.sql
show databases;
cat -n ha/docker-compose.yml | sed -n '19p'
19 /data/registry:/storage:z
vim ha/docker-compose.yml
cat -n ha/docker-compose.yml | sed -n '19p'
19 /data/storage:/storage:z #修改为咱们的nfs共享目录
cat -n harbor.cfg | sed -n '7p;11p;23p;24p;68p;130p;133p;136p;139p;145p;150p;154p;157p;160p;163p'
7 hostname = reg.mydomain.com #harbor的访问域名
11 ui_url_protocol = http #web访问链接方式
23 ssl_cert = /data/cert/server.crt #ca证书路径
24 ssl_cert_key = /data/cert/server.key #ca密钥路径
68 harbor_admin_password = Harbor12345 #harbor默认初始密码
130 db_host = mysql #harbor链接的mysql_db的IP
133 db_password = root123 #MySQL链接密码
136 db_port = 3306 #MySQL链接端口
139 db_user = root #MySQL链接用户
145 redis_url = redis:6379 #session链接的redis数据库路径
150 clair_db_host = postgres #clair漏洞检测组件链接的数据库IP
154 clair_db_password = password #postgres数据库链接密码
157 clair_db_port = 5432 #postgres数据库链接端口
160 clair_db_username = postgres #默认的链接用户名
163 clair_db = postgres #默认的库名
vim harbor.cfg
scp harbor.cfg 192.168.200.109:/data/install/harbor/
cat -n harbor.cfg | sed -n '7p;11p;23p;24p;68p;130p;133p;136p;139p;145p;150p;154p;157p;160p;163p'
7 hostname = www.yunjisuan.com
11 ui_url_protocol = https
23 ssl_cert = /etc/ssl/harbor/www.yunjisuan.com.crt
24 ssl_cert_key = /etc/ssl/harbor/www.yunjisuan.com.key
68 harbor_admin_password = Harbor12345
130 db_host = 192.168.200.110
133 db_password = 123123
136 db_port = 3306
139 db_user = root
145 redis_url = 192.168.200.110:6379
150 clair_db_host = 192.168.200.110
154 clair_db_password = 123123
157 clair_db_port = 5432
160 clair_db_username = postgres
163 clair_db = postgres
把证书信任给主,备,DNS-NFS 三台都得信任 ,信任以后都得重启docker!
mkdir -p /etc/ssl/harbor --->提早在nfs服务器建立目录
cd /data/ssl/
cp www.yunjisuan.com.crt www.yunjisuan.com.key /etc/ssl/harbor
cp www.yunjisuan.com.crt /etc/pki/ca-trust/source/anchors/
scp www.yunjisuan.com.crt www.yunjisuan.com.key 192.168.200.109:/etc/ssl/harbor
scp www.yunjisuan.com.crt www.yunjisuan.com.key 192.168.200.110:/etc/ssl/harbor
update-ca-trust enable
update-ca-trust extract
systemctl restart docker
cd /etc/ssl/harbor
cp www.yunjisuan.com.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust enable
update-ca-trust extract
systemctl restart docker
cd /etc/ssl/harbor
cp www.yunjisuan.com.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust enable
update-ca-trust extract
systemctl restart docker
docker ps -a
docker start harbor_db
docker startclair_db
docker start session
docker ps -a
cd /data/install/harbor
./install.sh --with-clair --ha
由于使用了自定义存储路径,安装途中须要yes确认
主和备两台最好一个一个的启动,省得冲突
cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.70 www.yunjisuan.com
docker login -uadmin -pHarbor12345 www.yunjisuan.com
docker images
docker tag redis:alpine www.yunjisuan.com/library/redis:v1
docker push www.yunjisuan.com/library/redis:v1
ls /data/storage
cd /data/install/harbor
./install.sh --with-clair --ha
由于使用了自定义存储路径,安装途中须要yes确认