记录:354
场景:在CentOS 7.9操作系统上,离线部署harbor容器镜像仓库集群,使用Redis为外部缓存、使用PostgreSQL为外部数据库、使用Ceph为共享存储、使用nginx为harbor的负载均衡、使用Keepalived为集群高可用、使用docker-ce操作容器、使用docker-compose操作harbor容器镜像仓库。
版本:
- 操作系统:CentOS 7.9
- Harbor版本:harbor-v2.3.5
- docker-ce版本:docker-ce-19.03.15
- docker-compose版本:docker-compose-v2.2.3
- Redis版本:redis-6.2.4
- PostgreSQL版本:PostgreSQL 13.4
- Ceph版本:ceph-13.2.10
- nginx版本:nginx-1.20.1
- keepalived版本:keepalived-v1.3.5
1.主机规划
1.1主机基础配置
主机app161;内存:4GB;硬盘(SCSI):50GB;硬盘2(SCSI):40GB。
主机app162;内存:4GB;硬盘(SCSI):50GB;硬盘2(SCSI):40GB。
主机app163;内存:4GB;硬盘(SCSI):50GB;硬盘2(SCSI):40GB。
主机app164;内存:4GB;硬盘(SCSI):50GB。
主机app165;内存:4GB;硬盘(SCSI):50GB。
1.2主机安装软件规划
主机部署Harbor、docker-ce、docker-compose、Redis、PostgreSQ、Ceph、nginx、keepalived等软件规划。
1.3主机基础软件
(1)配置对应主机名称、hosts文件。
(2)关闭防火墙、关闭SELinux。
(3)配置SSH免密登录。
(4)配置NTP时间同步服务器。
(5)配置离线本地镜像仓库。
2.安装ceph
2.1主机规划
2.1.1主机磁盘规划
(1)安装ceph集群节点
主节点app161;内存:4GB;硬盘(SCSI):50GB;硬盘2(SCSI):40GB。
从节点app162;内存:4GB;硬盘(SCSI):50GB;硬盘2(SCSI):40GB。
从节点app163;内存:4GB;硬盘(SCSI):50GB;硬盘2(SCSI):40GB。
要求:主机app161、app162、app163都挂载一个干净硬盘,该硬盘是专门给集群挂载ceph文件系统使用。
(2)安装ceph客户端挂载ceph文件系统节点
从节点app164;内存:4GB;硬盘(SCSI):50GB。
从节点app165;内存:4GB;硬盘(SCSI):50GB。
2.1.2主机软件规划
ceph集群和ceph客户端的主机、IP以及组件分布规划。
2.2下载安装包
(1)在公网下载ceph的rpm包
ceph-13.2.10版本noarch包:https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch
ceph-13.2.10版本x86_64包:https://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64
(2)已下载的rpm包拷贝到内网机器
(3)在内网制作本地ceph镜像仓库
(4)使用yum命令安装ceph
(5)搭建本地镜像仓库参考博文
参考博文:https://blog.csdn.net/zhangbeizhen18/article/details/128010070
2.3 ceph集群说明
ceph集群由ceph、mon、mgr、mds、osd、rgw等模块组成。
(1)主从节点安装软件
在主节点app161安装ceph-deploy、ceph、ceph-radosgw软件包。
在从节点app162、app163安装ceph、ceph-radosgw软件包。
(2)主节点使用ceph-deploy部署组件
在主节点使用ceph-deploy命令,完成ceph集群的mon、mgr、mds、osd、rgw等模块创建和部署。
2.4主节点安装ceph
在主机app161操作。
(1)安装ceph-deploy和ceph
安装命令:yum install -y ceph-deploy ceph-13.2.10
(2)安装ceph-radosgw
安装命令:yum install -y ceph-radosgw-13.2.10
(3)配置文件和日志目录
配置文件目录:/etc/ceph/
日志目录:/var/log/ceph
2.5从节点安装ceph
在从节点app162和app163操作。
(1)安装ceph
安装命令:yum install -y ceph-13.2.10
(2)安装ceph-radosgw
安装命令:yum install -y ceph-radosgw-13.2.10
(3)配置文件和日志目录
配置文件目录:/etc/ceph/
日志目录:/var/log/ceph
2.6创建ceph集群
在主节点app161操作,操作目录:cd /etc/ceph。
(1)创建ceph集群
命令:ceph-deploy new app161 app162 app163
解析:使用ceph-deploy new命令创建一个集群。在/etc/ceph目录下,生成配置文件:ceph.conf、ceph-deploy-ceph.log、ceph.mon.keyring、rbdmap。
2.7创建和初始化mon模块
在主节点app161操作,操作目录:cd /etc/ceph。
(1)创建并初始化mon模块
命令:ceph-deploy mon create-initial
解析:在ceph集群中创建并初始mon,创建Ceph的mon守护进程管理器。
(2)主节点生成配置文件
在主节点/etc/ceph下生成并写配置文件:ceph.bootstrap-mds.keyring、ceph.bootstrap-mgr.keyring、ceph.bootstrap-osd.keyring、ceph.bootstrap-rgw.keyring、ceph.client.admin.keyring、ceph.conf、ceph-deploy-ceph.log、ceph.mon.keyring、rbdmap。
(3)从节点生成配置文件
在从节点/etc/ceph下生成并写配置文件:ceph.conf、rbdmap、tmp5mSKU7。
(4)查看集群状态
命令:ceph -s
2.8创建ceph的osd模块
在主节点app161操作,操作目录:cd /etc/ceph。
(1)确认每个节点挂载的磁盘
主节点app161磁盘:/dev/sdb
从节点app162磁盘:/dev/sdb
从节点app163磁盘:/dev/sdb
查看命令:ceph-deploy disk list app161
解析:使用ceph-deploy disk list查主机磁盘。
(2)格式化每个节点挂载磁盘
app161节点硬盘格式化:ceph-deploy disk zap app161 /dev/sdb
app162节点硬盘格式化:ceph-deploy disk zap app162 /dev/sdb
app163节点硬盘格式化:ceph-deploy disk zap app163 /dev/sdb
解析:格式化需挂载的磁盘。
(3)创建osd并挂载到磁盘
将每个主机的/dev/sdb磁盘挂载为osd盘。
app161节点:ceph-deploy osd create --data /dev/sdb app161
app162节点:ceph-deploy osd create --data /dev/sdb app162
app163节点:ceph-deploy osd create --data /dev/sdb app163
(4)查看集群状态
命令:ceph -s
2.9创建ceph的mgr模块
在主节点app161操作,操作目录:cd /etc/ceph。
2.9.1创建mgr模块
(1)创建mgr
命令:ceph-deploy mgr create app161 app162 app163
解析:创建mgr,收集ceph集群状态,提供可视化界面用于监控集群。
(2)查看集群状态
命令:ceph -s
2.9.2配置dashboard
(1)开启dashboard功能
命令:ceph mgr module enable dashboard
(2)创建证书
命令:ceph dashboard create-self-signed-cert
(3)配置web登录的用户名和密码
命令:ceph dashboard set-login-credentials hangzhou demo123456
解析:在web页面登录的用户名和口令。
(4)修改dashboard默认端口
配置端口,默认端口是8443,修改为18443,修改后需重启mgr,修改端口才生效。
修改端口命令:ceph config set mgr mgr/dashboard/server_port 18443
重启mgr命令:systemctl restart ceph-mgr.target
(5)查看发布服务地址
命令:ceph mgr services
解析:从打印信息中,可以查看当前哪个IP可用登录dashboard的UI。
2.9.3登录dashboard
(1)登录ceph的dashboard
默认登录地址:https://192.168.19.161:8443/
修改后登录地址:
https://192.168.19.161:18443/
https://192.168.19.162:18443/
https://192.168.19.163:18443/
执行ceph -s查看,哪个可用。
用户名/口令:hangzhou/demo123456
2.10创建ceph的mds模块
在主节点app161操作,操作目录:cd /etc/ceph。
(1)创建mds
命令:ceph-deploy mds create app161 app162 app163
解析:使用cephfs文件系统服务,必须安装mds。作用:数据元服务。
(2)查看集群状态
命令:ceph -s
2.11创建ceph的rgw模块
在主节点app161操作,操作目录:cd /etc/ceph。
(1)创建rgw
命令:ceph-deploy rgw create app161 app162 app163
解析:创建rgw,创建对象网关。
(2)查看集群状态
命令:ceph -s
2.12启动和停止ceph组件
在主节点app161操作,操作目录:cd /etc/ceph。
2.12.1启动服务
systemctl start ceph.target
systemctl start ceph-mds.target
systemctl start ceph-mgr.target
systemctl start ceph-mon.target
systemctl start ceph-osd.target
systemctl start ceph-radosgw.target
2.12.2停止服务
systemctl stop ceph.target
systemctl stop ceph-mds.target
systemctl stop ceph-mgr.target
systemctl stop ceph-mon.target
systemctl stop ceph-osd.target
systemctl stop ceph-radosgw.target
2.12.3重启服务
systemctl restart ceph.target
systemctl restart ceph-mds.target
systemctl restart ceph-mgr.target
systemctl restart ceph-mon.target
systemctl restart ceph-osd.target
systemctl restart ceph-radosgw.target
2.13查看集群状态
查看命令:ceph -s
当前结果:
3.安装和配置ceph客户端
3.1主机规划
目标:使用2台主机部署ceph客户端,都挂载ceph文件系统。
主机app164;IP:192.168.19.164。
主机app165;IP:192.168.19.165。
3.2安装ceph-common
(1)安装ceph-common
命令:yum install -y ceph-common-13.2.10
解析:安装ceph-common。两个节点都需要安装。
(2)配置文件和目录
配置文件目录:cd /etc/ceph
如果没有目录,那么就创建:mkdir -p /etc/ceph
命令:mkdir -p /etc/ceph
3.3在ceph集群创建ceph文件系统
在ceph集群的主节点app161操作。操作目录:/etc/ceph。
(1)创建两个存储池pool
创建存放数据pool:ceph osd pool create harbor_data 24
创建存放元数据pool:ceph osd pool create harbor_metadata 12
解析:harbor_data用于存放数据,harbor_metadata用于存放元数据。
(2)创建ceph文件系统
命令:ceph fs new harborfs harbor_metadata harbor_data
解析:使用ceph fs new创建ceph文件系统;文件系统名称:harborfs;存储池harbor_data和harbor_metadata。
(3)查ceph文件系统
命令:ceph fs ls
3.4在ceph集群开启客户端认证
在主节点app161操作,操作目录:cd /etc/ceph。
解析:以下两个配置文件均开放,则集群已开启客户端可访问。
(1)确认ceph.conf文件
文件:/etc/ceph/ceph.conf
内容:auth_client_required = cephx
(2)确认客户端秘钥
秘钥文件名称:/etc/ceph/ceph.client.admin.keyring
秘钥内容:
- [client.admin]
- key = AQDtioBjVwefMBAAu0/oJPK2khWK+juNOQkyZw==
- caps mds = "allow *"
- caps mgr = "allow *"
- caps mon = "allow *"
- caps osd = "allow *"
3.5客户端挂载ceph文件系统
在客户端节app164和app165操作,操作目录:cd /etc/ceph。
(1)生成配置文件
从主节点app161的/etc/ceph/ceph.client.admin.keyring中的取出key值。
修改命令:vi /etc/ceph/client-admin.key
添加内容:AQC8N3NjlciyDxAAnhGRyaWxMMHKBNvu758P2A==
解析:在客户端主机创建client-admin.key文件中,存放从集群主机取出的key值。
(2)创建挂载文件系统的目录
命令:mkdir -p /harborfs_data
解析:此目录就是为了把远程文件系统挂载到本地使用。
(3)挂载文件系统
挂载命令:mount.ceph 192.168.19.161:6789:/ /harborfs_data -o name=admin,secretfile=/etc/ceph/client-admin.key
解析:mount.ceph,挂载命令。192.168.19.161:6789:/,指定主机和端口,端口6789是mon的端口,/斜杆表示从文件系统根目录。/harborfs_data/,表示挂载到本地的目录。-o表示指定参数选项。name=admin,表示用户名,实际就是ceph.client.admin.keyring文件中的admin。secretfile,表示秘钥文件。
(4)查看客户端挂载文件系统
命令:df -h
3.6设置开机自动挂载ceph文件系统
设置开机自动挂载文件系统后,每次开机无需手动挂载。在客户端节app164和app165操作。
(1)配置开机自动挂载
修改命令:vi /etc/rc.d/rc.local
添加内容:
mount.ceph 192.168.19.161:6789:/ /harborfs_data -o name=admin,secretfile=/etc/ceph/client-admin.key
(2)赋权
命令:chmod +x /etc/rc.d/rc.local
解析:把rc.local设置为可执行。
(3)生效
重启生效。每次开机都会执行一次rc.local中添加的命令。
4.安装redis集群
4.1主机规划
目标:使用1台主机部署redis。
主机app161;IP:192.168.19.161。
4.2下载安装包
离线安装Redis集群,需要在公网机器下载包并拷贝到内网。
4.2.1下载redis-6.2.4.tar.gz
下载命令:wget -O http://download.redis.io/releases/redis-6.2.4.tar.gz
解析:下载完成后,redis-6.2.4.tar.gz包在当前目录。
4.2.2下载gcc依赖包
(1)下载gcc相关的rpm包
下载命令:yum install --downloadonly --downloaddir /home/mirror/gcc-rpm devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils gcc
(2)把下载包拷贝到内网机器
4.3安装gcc
(1)安装gcc
安装命令:yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils gcc
(2)配置gcc
内容:echo 'source /opt/rh/devtoolset-9/enable'>>/etc/profile
生效:source /etc/profile
(3)查看gcc版本
命令:gcc --version
打印信息:gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)
4.4解压redis包到指定目录
命令:tar -xzvf /home/apps/software/redis-6.2.4.tar.gz -C /home/apps/module/
解析:解压后,Redis相关内容在/home/apps/module/redis-6.2.4。
4.5编译redis
操作目录:cd /home/apps/module/redis-6.2.4
编译命令:make -C /home/apps/module/redis-6.2.4
解析:编译redis后,在redis-6.2.4/src目录下生成.o文件和redis-server等文件,生成./deps文件夹。
4.6安装redis
安装redis到指定目录,默认是在/usr/local/。
操作目录:cd /home/apps/module/redis-6.2.4
安装命令:make install PREFIX=/home/apps/module/redis-6.2.4
解析:把redis-6.2.4指定安装在/home/apps/module/redis-6.2.4,会在此目录下生成bin目录。
4.7创建redis节点目录
部署一个单机版redis,端口号为27003。
配置目录:mkdir -p /home/apps/module/redis-single/node-27003/conf
数据目录:mkdir -p /home/apps/module/redis-single/node-27003/data
日志目录:mkdir -p /home/apps/module/redis-single/node-27003/log
运行目录:mkdir -p /home/apps/module/redis-single/node-27003/run
4.8拷贝redis配置到节点目录
从/home/apps/module/redis-6.2.4拷贝redis.conf配置文件到集群配置目录。
节点27003:cp -r /home/apps/module/redis-6.2.4/redis.conf /home/apps/module/redis-single/node-27003/conf/
4.9修改配置文件
在主机161操作。
修改命令:vi /home/apps/module/redis-single/node-27003/conf/redis.conf
修改内容:
- port 27003
- bind 192.168.19.161
- daemonize yes
- pidfile /home/apps/module/redis-single/node-27003/run/redis.pid
- logfile "/home/apps/module/redis-single/node-27003/log/stdout.pid"
- dir /home/apps/module/redis-single/node-27003/data
- appendonly yes
- masterauth
- requirepass demo123456
- #bind 127.0.0.1 -::1
4.10启动redis
4.10.1启动指令
操作目录:cd /home/apps/module/redis-6.2.4/bin
启动27003节点:./redis-server /home/apps/module/redis-single/node-27003/conf/redis.conf
4.10.2查看监听端口
命令:netstat -atulnp | grep redis
5.安装PostgreSQL
5.1主机规划
目标:使用一台主机部署PostgreSQL数据库,为Harbor集群提供共享存储数据库。
主机app163;IP:192.168.19.163。
5.2下载安装包
下载命令:wget https://ftp.postgresql.org/pub/source/v13.4/postgresql-13.4.tar.gz --no-check-certificate
解析:下载完成后,postgresql-13.4.tar.gz包在当前目录;--no-check-certificate,不验证服务端的证书。
5.3安装基础依赖
安装命令:yum install -y readline-devel zlib-devel zlib gcc
解析:安装基础依赖,避免安装PostgreSQL报错。
5.4创建Linux普通用户
(1)创建用户
默认超级用户root不能启动PostgreSQL,创建普通用户postgre。
创建用户命令:useradd postgres
(2)不设置密码使用root用户切换到postgres
登录postgres命令:su postgres
退出postgresml:exit
5.5解压PostgreSQL包
解压命令:tar -xzvf /home/apps/software/postgresql-13.4.tar.gz -C /home/apps/module
解析:把postgresql-13.4.tar.gz解压到指定目录。
5.6规划安装目录
(1)规划安装目录
创建目录:mkdir -p /home/apps/module/postgresql
(2)检查路径
操作目录:cd /home/apps/module/postgresql-13.4
执行命令:./configure --prefix=/home/apps/module/postgresql
解析:./configure是postgresql自带的脚本。
5.7编译PostgreSQL
操作目录:cd /home/apps/module/postgresql-13.4
编译命令:make -C /home/apps/module/postgresql-13.4
解析:-C,编译指定目录下内容。
5.8安装PostgreSQL
操作目录:cd /home/apps/module/postgresql-13.4
安装目的目录:/home/apps/module/postgresql
安装命令:make install PREFIX=/home/apps/module/postgresql
解析:使用PREFIX,把PostgreSQL安装到指定目录。在指定目录下生成:bin、include、lib、share。
5.9创建PostgreSQL的数据目录
创建命令:mkdir -p /home/data/postgresql/data
解析:data目录存放PostgreSQL的数据。
5.10修改数据目录和安装目录的用户所有权
PostgreSQL安装目录和数据目录,所有权修改为postgres用户。
安装目录赋权:chown -R postgres:postgres /home/apps/module/postgresql/
数据目录赋权:chown -R postgres:postgres /home/data/postgresql/data/
5.11设置PostgreSQL环境变量
(1)切换用户和目录
切换到postgres用户下操作。
切换命令:su postgres
切换到目录:cd /home/postgres
查看用户下配置文件清单:ll -a
(2)修改配置
修改配置:vi .bash_profile
修改内容:
- PGHOME=/home/apps/module/postgresql
- export PGHOME
- PGDATA=/home/data/postgresql/data
- export PGDATA
- PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin
解析:PGHOME,安装目录;PGDATA,数据目录。
(3)配置生效
配置生效命令:source ./.bash_profile
(4)确认配置生效
查看版本命令:psql -V
打印信息:psql (PostgreSQL) 13.4
查看命令所在目录:which psql
打印信息:/home/apps/module/postgresql/bin/psql
以上,两条命令均可以验证配置已经生效。
(5)设置开机启动配置生效
默认情况下,重启机器后.bash_profile的环境变量会失效,需手动执行source命令刷新配置。需设置为开机启动,自动刷新生效。
修改指令:vi /etc/profile
增加内容:source /home/postgres/.bash_profile
5.12初始化PostgreSQL数据库
初始化命令:initdb
解析:配置了环境变量,initdb命令在postgres用户任意命令可以使用。
打印成功信息:Success. You can now start the database server using:
pg_ctl -D /home/data/postgresql/data -l logfile start
5.13启动PostgreSQL数据库
(1)启动PostgreSQL
启动命令(默认):pg_ctl -D /home/data/postgresql/data -l logfile start
启动命令(指定日志目录):pg_ctl -D /home/data/postgresql/data -l /home/data/postgresql/data/postgres.log start
解析:在执行初始化initdb成功后,会提示登录命令,也就是默认启动命令。
(2)查看PostgreSQL监听端口
命令:netstat -atunlp | grep postgres
解析:postgres的默认端口是5432。
5.14登录PostgreSQL数据库和修改密码
(1)登录PostgreSQL
登录命令:psql
解析:默认登录不需要密码。
(2)修改登录密码
修改命令:\password
口令:demo123456
解析:需输入两次
(3)退出登录
命令:\q
5.15设置远程可登录
(1)修改远程可登录
修改文件:vi /home/data/postgresql/data/postgresql.conf
修改内容:
listen_addresses = '*'
解析:把#listen_addresses = 'localhost',修改为匹配所有IP地址。
(2)修改登录需要密码
修改文件:vi /home/data/postgresql/data/pg_hba.conf
修改内容:
- local all all password
- host all all 127.0.0.1/32 password
- host all all 192.168.19.1/32 password
- host all all ::1/128 password
解析:192.168.19.1/32,部署PostgreSQL主机是192.168.19.163。
5.16重启PostgreSQL数据库
(1)重启数据库
重启动命令:pg_ctl -D /home/data/postgresql/data -l /home/data/postgresql/data/postgres.log restart
(2)登录数据库
命令:psql
解析:提示Password for user postgres:,需要输入登录密码。
5.17创建数据库
(1)创建3个数据库
命令:create database registry;
命令:create database notary_signer;
命令:create database notary_server;
解析:registry、notary_signer、notary_server是harbor需求的3个数据库。
6.安装nginx和keepalived
6.1主机规划
目标:使用2台主机都部署nginx和keepalived。
主机app164;IP:192.168.19.164;端口:18121。
主机app165;IP:192.168.19.165;端口:18121。
6.2下载安装包
软件包版本:
nginx.x86_64版本:1.20.1
nginx-all-modules版本:1.20.1
keepalived.x86_64版本:1.3.5
6.3安装nginx和keepalived
(1)安装nginx
命令:yum install -y nginx
(2)安装nginx-all-modules
命令:yum install -y nginx-all-modules
(3)安装keepalived
命令:yum install -y keepalived
6.4修改nginx配置
主机app164和app165配置一样。
(1)nginx配置文件目录
目录:cd /etc/nginx
(2)nginx配置文件目录
修改文件:vi /etc/nginx/nginx.conf
添加内容:
- stream{
- log_format main '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent';
- access_log /var/log/nginx/harbor-access.log main;
- upstream harbor{
- server 192.168.19.164:18021;
- server 192.168.19.165:18021;
- }
- server {
- listen 18121;
- proxy_pass harbor;
- }
- }
解析:192.168.19.164:18021和192.168.19.165:18021是部署了harbor服务的主机ip和端口。18121,是nginx负载均衡的端口号。
(3)监测nginx配置文件语法
操作目录:cd /etc/nginx
命令:nginx -t
6.5修改keepalived配置
(1)修改主节点的keepalived配置
配置文件目录:/etc/keepalived/
修改文件:vi /etc/keepalived/keepalived.conf
修改内容:
- ! Configuration File for keepalived
- global_defs {
- notification_email {
- acassen@firewall.loc
- }
- router_id app164
- }
- vrrp_instance VI_1 {
- state MASTER
- interface ens33
- mcast_src_ip:192.168.19.164
- virtual_router_id 164
- priority 100
- advert_int 1
- nopreempt
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- virtual_ipaddress {
- 192.168.19.58/24
- }
- track_script {
- chk_nginx
- }
- }
- # to check nginx
- vrrp_script chk_nginx {
- script "/etc/keepalived/check_nginx.sh"
- interval 2
- weight -30
- }
解析:192.168.19.58/24是虚拟机IP,也就是VIP。对外可以提供此IP。
(2)修改从节点的keepalived配置
配置文件目录:/etc/keepalived/
修改文件:vi /etc/keepalived/keepalived.conf
修改内容:
- ! Configuration File for keepalived
- global_defs {
- notification_email {
- acassen@firewall.loc
- }
- router_id app165
- }
- vrrp_instance VI_1 {
- state BACKUP
- interface ens33
- mcast_src_ip:192.168.19.165
- virtual_router_id 164
- priority 80
- advert_int 1
- nopreempt
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- virtual_ipaddress {
- 192.168.19.58/24
- }
- track_script {
- chk_nginx
- }
- }
- vrrp_script chk_nginx {
- script "/etc/keepalived/check_nginx.sh"
- interval 2
- weight -30
- }
(3)健康检查脚本
修改配置文件:vi /etc/keepalived/check_nginx.sh
修改内容:
- #!/bin/bash
- counter=`ps -C nginx --no-header | wc -l`
- if [ $counter -eq 0 ]; then
- service nginx start
- sleep 3
- counter=`ps -C nginx --no-header | wc -l`
- if [ $counter -eq 0 ]; then
- service keepalived stop
- fi
- fi
5.6启动nginx
(1)启动
启动:systemctl start nginx
重启:systemctl restart nginx
(2)停止
停止:systemctl stop nginx
6.7启动keepalived
(1)启动
启动:systemctl start keepalived
重启:systemctl restart keepalived
(2)停止
停止:systemctl stop keepalived
6.8启动查看VIP地址
在主节点app164节点查看VIP地址。
查看命令:ip addr
查看命令:hostname -I
解析:192.168.19.164是主机IP,192.168.19.58是VIP
7.安装docker
7.1主机规划
目标:使用2台主机部署docker。
主机app164;IP:192.168.19.164。
主机app165;IP:192.168.19.165。
7.2下载docker-ce
(1)下载docker-ce
下载:docker-ce-19.03.15和docker-ce-cli-19.03.15
7.3安装docker-ce
(1)安装docker-ce
命令:yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15
(2)查看docker版本
查看版本:docker --version
7.4启动docker-ce
(1)启动docker-ce
命令:systemctl start docker
(2)关闭docker-ce
命令:systemctl stop docker
(3)查看docker-ce状态
命令:systemctl status docker
8.安装docker-compose
8.1下载docker-compose
(1)下载docker-compose
下载命令:wget https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64
8.2安装docker-compose
docker-compose-linux-x86_64是可执行包,直接使用。
(1)把包移到bin目录
命令:cp /home/apps/software/docker-compose-linux-x86_64 /usr/local/bin/docker-compose
(2)把docker-compose添加为可执行
命令:chmod +x /usr/local/bin/docker-compose
(3)查看docker-compose版本
命令:docker-compose --version
9.安装harbor
9.1主机规划
目标:使用2台主机部署harbor。
主机app164;IP:192.168.19.164。
主机app165;IP:192.168.19.165。
9.2下载安装包
(1)下载
命令:wget https://github.com/goharbor/harbor/releases/download/v2.3.5/harbor-offline-installer-v2.3.5.tgz
9.3解压安装包
(1)解压到指定目录
命令:tar -xzvf /home/apps/software/harbor-offline-installer-v2.3.5.tgz -C /home/apps/module/
解析:离线安装包,直接解压到指定目录就行。-C,就是指定目录。
9.4修改配置(app164节点)
操作目录:/home/apps/module/harbor
(1)把harbor.yml.tmpl复制一份为harbor.yml
命令:cp harbor.yml.tmpl harbor.yml
(2)修改配置
修改命令:vi /home/apps/module/harbor/harbor.yml
修改内容(本例配置文件内容):
- hostname: app164
- http:
- port: 18021
- external_url: http://192.168.19.58:18121
- harbor_admin_password: Harbor123456
- data_volume: /harborfs_data
- trivy:
- ignore_unfixed: false
- skip_update: false
- insecure: false
-
- 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: 2.3.0
- external_database:
- harbor:
- host: 192.168.19.163
- port: 5432
- db_name: registry
- username: postgres
- password: hang@123456
- ssl_mode: disable
- max_idle_conns: 100
- max_open_conns: 900
- notary_signer:
- host: 192.168.19.163
- port: 5432
- db_name: notary_signer
- username: postgres
- password: hang@123456
- ssl_mode: disable
- max_idle_conns: 100
- max_open_conns: 900
- notary_server:
- host: 192.168.19.163
- port: 5432
- db_name: notary_server
- username: postgres
- password: hang@123456
- ssl_mode: disable
- max_idle_conns: 100
- max_open_conns: 900
- external_redis:
- host: 192.168.19.161:27003
- password: hang@123456
- registry_db_index: 1
- jobservice_db_index: 2
- chartmuseum_db_index: 3
- trivy_db_index: 5
- idle_timeout_seconds: 30
- proxy:
- http_proxy:
- https_proxy:
- no_proxy:
- components:
- - core
- - jobservice
- - trivy
- metric:
- enabled: false
- port: 9090
- path: /metrics
9.5加载harbor所需的镜像
操作目录:cd /home/apps/module/harbor
命令:docker load -i harbor.v2.3.5.tar.gz
解析:harbor.v2.3.5.tar.gz这个压缩包里包含harbor所需的组件镜像。docker需启动。
9.6把配置文件注入到harbor
操作目录:cd /home/apps/module/harbor
命令:./prepare
解析:harbor.yml是harbor自带脚本,功能就是把配置文件的内容注入到各组件中。
9.7安装harbor
操作目录:cd /home/apps/module/harbor
命令:./install.sh --with-trivy --with-chartmuseum
解析:./install.sh是harbor自带脚本,功能就是安装harbor的各个组件,安装完成后,默认启动各组件。
9.8查看harbor服务状态
(1)查看服务状态
命令:docker-compose ps
全路径:docker-compose -f /home/apps/module/harbor/docker-compose.yml ps
9.9在节点app165安装harbor
在app165安装harbor步骤与在app164一致、不同的是harbor.yml配置需改在主机名称。
(1)把app164节点harbor.yml文件分发到app165节点
(2)修改app165节点harbor.yml
把hostname: app164改为hostname: app165。
9.10登录harbor
(1)使用nginx地址登录
nginx的VIP地址:http://192.168.19.58:18121
nginx的地址:http://192.168.19.164:18121
nginx的地址:http://192.168.19.165:18121
(2)登录harborUI信息
用户名/口令(默认):admin/Harbor12345
用户名/口令(修改后):admin/Harbor123456
9.11登录harbor(命令行)
(1)添加私有仓库地址到docker配置
修改命令:vi /etc/docker/daemon.json
修改内容:
- {
- "insecure-registries":["192.168.19.58:18121"],
- "exec-opts": ["native.cgroupdriver=systemd"],
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m"
- },
- "storage-driver": "overlay2"
- }
(2)重新加载docker配置
重新加载配置:systemctl daemon-reload
重启docker:systemctl restart docker
(3)登录
命令:docker login http://192.168.19.58:18121 -u admin -p Harbor123456
9.12推送一个镜像到harbor
(1)查看本地的镜像
查看:docker images
查看(指定容器):docker images goharbor/nginx-photon
解析:在离线安装harbor时,本地就有harbor的相关镜像,就推送nginx-photon镜像到harbor镜像仓库。
(2)推送到镜像仓库
镜像打标签命令:docker tag goharbor/nginx-photon:v2.3.5 192.168.19.58:18121/library/nginx-photon:v2.3.5
镜像推送命令:docker push 192.168.19.58:18121/library/nginx-photon:v2.3.5
(3)推送到镜像仓库
在harbor UI界面查看。
10.操作harbor
在安装完成后,以后使用harbor的,每个组件启动。
10.1启动redis
操作主机:app161
启动命令:
/home/apps/module/redis-6.2.4/bin/redis-server /home/apps/module/redis-single/node-27003/conf/redis.conf
10.2启动PostgreSQL
操作主机:app163
操作用户:su postgres
启动命令:pg_ctl -D /home/data/postgresql/data -l /home/data/postgresql/data/postgres.log start
重启命令:pg_ctl -D /home/data/postgresql/data -l /home/data/postgresql/data/postgres.log restart
10.3启动nginx
启动命令:systemctl start nginx
重启命令:systemctl restart nginx
停止命令:systemctl stop nginx
10.4启动keepalived
启动命令:systemctl start keepalived
重启命令:systemctl restart keepalived
停止命令:systemctl stop keepalived
10.5确认挂载文件系统
(1)查看文件系统挂载
命令:df -h
(2)挂载文件系统
命令:mount.ceph 192.168.19.161:6789:/ /harborfs_data -o name=admin,secretfile=/etc/ceph/client-admin.key
10.6启动docker
(1)启动docker-ce
命令:systemctl start docker
(2)关闭docker-ce
命令:systemctl stop docker
(3)查看docker-ce状态
命令:systemctl status docker
10.7确认docker-compose
可执行文件目录:ll /usr/local/bin/docker-compose
10.8启动harbor
(1)在配置文件目录操作
操作目录:cd /home/apps/module/harbor/
启动命令:docker-compose up
后台启动:docker-compose up -d
停止命令:docker-compose down
解析:在此目录下存放docker-compose的必须配置:docker-compose.yml。
(2)任意目录指定配置文件
命令:docker-compose -f /home/apps/module/harbor/docker-compose.yml up -d
解析:-f /home/apps/module/harbor/docker-compose.yml,指定配置文件;-d,后台进程。
10.9登录harbor
(1)使用nginx地址登录
nginx的VIP地址:http://192.168.19.58:18121
nginx的地址:http://192.168.19.164:18121
nginx的地址:http://192.168.19.165:18121
(2)登录harborUI信息
用户名/口令(默认):admin/Harbor12345
用户名/口令(修改后):admin/Harbor123456
11.名词
Harbor:Harbor is an open source registry that secures artifacts with policies and role-based access control, ensures images are scanned and free from vulnerabilities, and signs images as trusted.
Docker:一个开源的应用容器引擎,让开发者可以打包应用以及依赖包到一个可移植的镜像中,可以发布到 Linux操作系统的机器上,也可以实现虚拟化。容器使用沙箱机制,相互之间不会有任何接口。
docker-ce:是免费的Docker产品,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。
docker-compose: Docker Compose is a tool for running multi-container applications on Docker defined using the Compose file format.A Compose file is used to define how one or more containers that make up your application are configured. Once you have a Compose file, you can create and start your application with a single command: docker compose up.
Redis: The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.
PostgreSQL: PostgreSQL is a powerful, open source object-relational database system.
Ceph:Ceph is a distributed object, block, and file storage platform.
nginx:nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server.
keepalived:Keepalived is a routing software written in C. The main goal of this project is to provide simple and robust facilities for loadbalancing and high-availability to Linux system and Linux based infrastructures.
以上,感谢。
2022年12月4日