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

news2024/12/27 4:02:52

记录: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  <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

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日

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/61198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【专业术语】(计算机 / 深度学习与目标检测 / 轨道交通)

专业术语-计算机 / 深度学习与目标检测 / 轨道交通一、 计算机1 IDE2 API3 CUDA Driver API3.1 cuInit - 驱动初始化3.2 关于context&#xff0c;有两种&#xff1a;3.3 CUcontext4 RuntimeAPI5 Memory5.1 关于内存&#xff0c;有两大类&#xff1a;5.1.1 CPU内存&#xff0c;称…

[附源码]Python计算机毕业设计Django考试系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

FISCO BCOS(二十五)———多机部署

一、基础环境搭建 1、查看当前是否安装了ssh-server服务 dpkg -l | grep ssh2、安装ssh-server服务 sudo apt-get install openssh-server3、修改配置文件"/etc/ssh/sshd_config" 4、重启openssh-server root@FISCOBCOS01:~# sudo /etc/init.d/ssh restart5、查看…

高数 |【2020数一真题】部分错题及经典题自用思路整理

T1:积分限与被积函数都等价为无穷小 T2:不连续一定不可导 T3:可微的定义 T4:收敛半径 T6:空间直线与向量 法一:

WINDOWS7-11磁盘分区教程

首先&#xff0c;打开计算机管理界面 以windows11为例&#xff0c;在任务栏搜索框内&#xff0c;输入“计算机管理界面” 点击打开。 然后选择存储-》磁盘管理 到这里之后&#xff0c;我们需要选中一个磁盘&#xff0c;压缩卷分出来一部分空间。为新分区做准备。 以E盘为例&a…

MapStruct与lombok加载顺序问题与annotationProcessorPaths的关系?

MapStruct是什么&#xff1f; MapStruct is a code generator that greatly simplifies the implementation of mappings between Java bean types based on a convention over configuration approach.——https://mapstruct.org/ 从官方定义来看&#xff0c;MapStruct类似于我…

C语言Socket编程,实现两个程序间的通信

文章目录server和client通信流程图实现两个程序间的通信1.服务端server2.客户端client3.怎么运行呢&#xff1f;4.重写代码已剪辑自: https://www.cnblogs.com/fisherss/p/12085123.html server和client通信流程图 在mooc上找到的,使用Socket客户端client和服务端server通信的…

17-JavaSE基础巩固练习:Math类API两道数学算法水题

两道算法水题&#xff08;一&#xff09; 一、判断质数 判断一个数是否为一个质数。 1、以前的写法 package com.app.demo26_math_api;public class Test1 {public static void main(String[] args) {/*判断n(任意整数)是否为一个质数&#xff1a;以前的写法:是用n对2~n之间…

JavaWeb Filter 过滤器

参考&#xff1a;JavaWeb过滤器(Filter)详解 1、简介 顾名思义就是对事物进行过滤的&#xff0c;在Web中的过滤器&#xff0c;当然就是对请求进行过滤&#xff0c;我们使用过滤器&#xff0c;就可以对请求进行拦截&#xff0c;然后做相应的处理&#xff0c;实现许多特殊功能。…

阿里云部署应用

安装jdk 查看已安装版本 rpm -qa | grep java yum命令查找JDK1.8软件包 yum -y list java-1.8* 安装列表中的JDK1.8软件包 yum -y install java-1.8.0-openjdk-devel.x86_64 java -version 配置环境变量 vim /etc/profile JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.…

三、内存管理 (二)虚拟存储器

目录 2.1虚拟内存的基本概念 2.2内存分配策略 2.2.1驻留集大小 2.2.2固定分配局部置换 2.2.3可变分配全局置换 2.2.4可变分配局部置换 2.3地址变换机构 2.3.1页表机制 2.3.2预调页策略和请求调页策略 2.3.3缺页中断机构 2.3.4对换区与文件区 2.3.5页面置换算法 …

搭建springWeb保姆级教程

经过我们对mybatis和spring框架的学习&#xff0c;我们即将要用框架进行前后端数据交互&#xff0c;已经脱离了那种用servlet的方式进行数据传输&#xff0c;今天让我们来搭建最基本的springweb框架&#xff01;&#xff01;&#xff01; 1.创建一个web项目 1. 2. 选择一个we…

自定义线程实现c++代码回调run方法

目录 pthread_create函数介绍 前面写过一篇文章《Thread类的start()方法创建线程的底层分析》&#xff0c;这次来自定义一个线程&#xff0c;并实现在底层创建内核线程来执行用户代码。 pthread_create函数介绍 在这之前&#xff0c;先熟悉下Linux中创建内核线程函数pthread…

【计算机视觉】 摄像机标定

摄像机标定 齐次坐标 齐次坐标&#xff0c;将欧氏空间的无穷远点&#xff0c;与投影空间中有实际意义的消失点&#xff0c;建立起映射关系。 把齐次坐标转化为笛卡尔坐标的方法&#xff1a;是前面n-1个坐标分量分别除以最后一个分量即可 一些解释和性质&#xff1a; 比较好的…

Linux最常用命令用法总结(精选)

1. su 普通用户切换root用户 ubuntuubuntu20:~$ su Password: rootubuntu20:/home/ubuntu# exit exit ubuntuubuntu20:~$ 2. clear 清除当前终端显示的输出快捷键ctrlL键 3. cd 改变目录 ubuntuubuntu20:~/workspace$ cd .. ubuntuubuntu20:~$ cd / ubuntuubuntu20:/$ c…

docker下搭建redis集群

1. 环境准备 准备好Linux系统机器&#xff0c;并安装好docker&#xff0c;阅读这篇文章前请先了解清楚docker的基本知识并且会熟悉运用docker的常用命令。学习docker基础知识可以参考这篇博文 安装好并启动docker后就可以开始搭建redis了 2. docker容器下安装redis 本篇文章…

数据链路层(必备知识)

文章目录1、数据链路层的作用2、认识以太网<1>以太网帧格式<2>认识MAC地址<3>认识MTU<4>查看硬件地址和MTU3、ARP协议<1>什么是ARP协议<2>ARP数据报格式<3>ARP协议的工作机制4、其他重要协议或技术<1> DNS<2>NAT技术1、…

《MySQL实战45讲》——学习笔记19 “SQL查一行执行慢的排查、锁等待/一致性读“【建议收藏】

由于SQL本身的写法问题&#xff08;如join太多表、未走索引/索引失效、一次查太多数据等&#xff09;&#xff0c;或是MySQL节点CPU占用率很高或IO利用率很高&#xff0c;都会导致一条SQL执行的比较慢&#xff1b;但是有时候&#xff0c;"只查一行数据"&#xff0c;也…

内存优化之重新认识内存

我们知道&#xff0c;手机的内存是有限的&#xff0c;如果应用内存占用过大&#xff0c;轻则引起卡顿&#xff0c;重则导致应用崩溃或被系统强制杀掉&#xff0c;更严重的情况下会影响应用的留存率。因此&#xff0c;内存优化是性能优化中非常重要的一部分。但是&#xff0c;很…

深入体会线程状态的切换

✨✨hello&#xff0c;愿意点进来的小伙伴们&#xff0c;你们好呐&#xff01; &#x1f43b;&#x1f43b;系列专栏&#xff1a;【JavaEE初阶】 &#x1f432;&#x1f432;本篇内容&#xff1a;线程状态详解 &#x1f42f;&#x1f42f;作者简介:一名现大二的三非编程小白&am…