• 离线安装harbor容器镜像仓库(harbor-v2.3.5)


    记录:354

    场景:在CentOS 7.9操作系统上,离线部署harbor容器镜像仓库集群,使用Redis为外部缓存、使用PostgreSQL为外部数据库、使用Ceph为共享存储、使用nginx为harbor的负载均衡、使用Keepalived为集群高可用、使用docker-ce操作容器、使用docker-compose操作harbor容器镜像仓库。

    版本:

    1. 操作系统:CentOS 7.9
    2. Harbor版本:harbor-v2.3.5
    3. docker-ce版本:docker-ce-19.03.15
    4. docker-compose版本:docker-compose-v2.2.3
    5. Redis版本:redis-6.2.4
    6. PostgreSQL版本:PostgreSQL 13.4
    7. Ceph版本:ceph-13.2.10
    8. nginx版本:nginx-1.20.1
    9. 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

    秘钥内容:

    1. [client.admin]
    2. key = AQDtioBjVwefMBAAu0/oJPK2khWK+juNOQkyZw==
    3. caps mds = "allow *"
    4. caps mgr = "allow *"
    5. caps mon = "allow *"
    6. 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

    修改内容:

    1. port 27003
    2. bind 192.168.19.161
    3. daemonize yes
    4. pidfile /home/apps/module/redis-single/node-27003/run/redis.pid
    5. logfile "/home/apps/module/redis-single/node-27003/log/stdout.pid"
    6. dir /home/apps/module/redis-single/node-27003/data
    7. appendonly yes
    8. masterauth
    9. requirepass demo123456
    10. #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

    修改内容:

    1. PGHOME=/home/apps/module/postgresql
    2. export PGHOME
    3. PGDATA=/home/data/postgresql/data
    4. export PGDATA
    5. 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

    修改内容:

    1. local all all password
    2. host all all 127.0.0.1/32 password
    3. host all all 192.168.19.1/32 password
    4. 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

    添加内容:

    1. stream{
    2. log_format main '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent';
    3. access_log /var/log/nginx/harbor-access.log main;
    4. upstream harbor{
    5. server 192.168.19.164:18021;
    6. server 192.168.19.165:18021;
    7. }
    8. server {
    9. listen 18121;
    10. proxy_pass harbor;
    11. }
    12. }

    解析: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

    修改内容:

    1. ! Configuration File for keepalived
    2. global_defs {
    3. notification_email {
    4. acassen@firewall.loc
    5. }
    6. router_id app164
    7. }
    8. vrrp_instance VI_1 {
    9. state MASTER
    10. interface ens33
    11. mcast_src_ip:192.168.19.164
    12. virtual_router_id 164
    13. priority 100
    14. advert_int 1
    15. nopreempt
    16. authentication {
    17. auth_type PASS
    18. auth_pass 1111
    19. }
    20. virtual_ipaddress {
    21. 192.168.19.58/24
    22. }
    23. track_script {
    24. chk_nginx
    25. }
    26. }
    27. # to check nginx
    28. vrrp_script chk_nginx {
    29. script "/etc/keepalived/check_nginx.sh"
    30. interval 2
    31. weight -30
    32. }

    解析:192.168.19.58/24是虚拟机IP,也就是VIP。对外可以提供此IP。

    (2)修改从节点的keepalived配置

    配置文件目录:/etc/keepalived/

    修改文件:vi /etc/keepalived/keepalived.conf

    修改内容:

    1. ! Configuration File for keepalived
    2. global_defs {
    3. notification_email {
    4. acassen@firewall.loc
    5. }
    6. router_id app165
    7. }
    8. vrrp_instance VI_1 {
    9. state BACKUP
    10. interface ens33
    11. mcast_src_ip:192.168.19.165
    12. virtual_router_id 164
    13. priority 80
    14. advert_int 1
    15. nopreempt
    16. authentication {
    17. auth_type PASS
    18. auth_pass 1111
    19. }
    20. virtual_ipaddress {
    21. 192.168.19.58/24
    22. }
    23. track_script {
    24. chk_nginx
    25. }
    26. }
    27. vrrp_script chk_nginx {
    28. script "/etc/keepalived/check_nginx.sh"
    29. interval 2
    30. weight -30
    31. }

    (3)健康检查脚本

    修改配置文件:vi /etc/keepalived/check_nginx.sh

    修改内容:

    1. #!/bin/bash
    2. counter=`ps -C nginx --no-header | wc -l`
    3. if [ $counter -eq 0 ]; then
    4. service nginx start
    5. sleep 3
    6. counter=`ps -C nginx --no-header | wc -l`
    7. if [ $counter -eq 0 ]; then
    8. service keepalived stop
    9. fi
    10. 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

    修改内容(本例配置文件内容):

    1. hostname: app164
    2. http:
    3. port: 18021
    4. external_url: http://192.168.19.58:18121
    5. harbor_admin_password: Harbor123456
    6. data_volume: /harborfs_data
    7. trivy:
    8. ignore_unfixed: false
    9. skip_update: false
    10. insecure: false
    11. jobservice:
    12. max_job_workers: 10
    13. notification:
    14. webhook_job_max_retry: 10
    15. chart:
    16. absolute_url: disabled
    17. log:
    18. level: info
    19. local:
    20. rotate_count: 50
    21. rotate_size: 200M
    22. location: /var/log/harbor
    23. _version: 2.3.0
    24. external_database:
    25. harbor:
    26. host: 192.168.19.163
    27. port: 5432
    28. db_name: registry
    29. username: postgres
    30. password: hang@123456
    31. ssl_mode: disable
    32. max_idle_conns: 100
    33. max_open_conns: 900
    34. notary_signer:
    35. host: 192.168.19.163
    36. port: 5432
    37. db_name: notary_signer
    38. username: postgres
    39. password: hang@123456
    40. ssl_mode: disable
    41. max_idle_conns: 100
    42. max_open_conns: 900
    43. notary_server:
    44. host: 192.168.19.163
    45. port: 5432
    46. db_name: notary_server
    47. username: postgres
    48. password: hang@123456
    49. ssl_mode: disable
    50. max_idle_conns: 100
    51. max_open_conns: 900
    52. external_redis:
    53. host: 192.168.19.161:27003
    54. password: hang@123456
    55. registry_db_index: 1
    56. jobservice_db_index: 2
    57. chartmuseum_db_index: 3
    58. trivy_db_index: 5
    59. idle_timeout_seconds: 30
    60. proxy:
    61. http_proxy:
    62. https_proxy:
    63. no_proxy:
    64. components:
    65. - core
    66. - jobservice
    67. - trivy
    68. metric:
    69. enabled: false
    70. port: 9090
    71. 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

    修改内容:

    1. {
    2. "insecure-registries":["192.168.19.58:18121"],
    3. "exec-opts": ["native.cgroupdriver=systemd"],
    4. "log-driver": "json-file",
    5. "log-opts": {
    6. "max-size": "100m"
    7. },
    8. "storage-driver": "overlay2"
    9. }

    (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日

  • 相关阅读:
    基于Java实现的武汉地铁模拟系统
    代码随想录第52天 | 300.最长递增子序列 、 674. 最长连续递增序列 、 718. 最长重复子数组
    使用Rust编写爬虫代码来抓取精美的图片
    Python async模块使用(杂文)
    【蓝桥杯选拔赛真题30】python开关灯 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析
    dreamweaver作业静态HTML网页设计 大学美食菜谱网页制作教程(web前端网页制作课作业)
    创新智能环境带来无线通信与感知的新视角
    SpringBoot2.x 自动化生成代码整合Mybatis
    【架构】研发高可用架构和系统设计经验
    MobaXterm工具软件使用介绍
  • 原文地址:https://blog.csdn.net/zhangbeizhen18/article/details/128174902