记录: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等软件规划。

docker离线安装fontconfig docker离线安装hbase_docker-ce

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以及组件分布规划。

docker离线安装fontconfig docker离线安装hbase_docker-ce_02

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)搭建本地镜像仓库参考博文

参考博文:

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

docker离线安装fontconfig docker离线安装hbase_docker-ce_03

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

当前结果:

docker离线安装fontconfig docker离线安装hbase_harbor-v2.3.5_04

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  <demo123456>
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

docker离线安装fontconfig docker离线安装hbase_离线安装harbor_05

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

docker离线安装fontconfig docker离线安装hbase_离线安装harbor_06

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镜像仓库。

docker离线安装fontconfig docker离线安装hbase_容器镜像仓库_07

(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界面查看。

docker离线安装fontconfig docker离线安装hbase_harbor-v2.3.5_08

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日