IP | 主机名 | 角色 |
---|---|---|
192.168.199.11 | 192-168-199-11 | 代理节点1 |
192.168.199.12 | 192-168-199-12 | 代理节点2 |
192.168.199.13 | 192-168-199-13 | 运算节点1 |
192.168.199.14 | 192-168-199-14 | 运算节点2 |
192.168.199.15 | 192-168-199-15 | 运维节点 |
DNS服务初始化
安装Bind9
主要在 192.168.199.11
上操作,安装时请注意主机名
[root@192-168-199-11 ~]# yum install bind -y
[root@192-168-199-11 ~]# rpm -qa bind
bind-9.11.4-16.P2.el7_8.6.x86_64
配置Bind9
修改主配置文件
[root@192-168-199-11 ~]# vim /etc/named.conf
listen-on port 53 { 192.168.199.11; };
# ipv6可删除,allow-query指定哪些主机可以使用此服务查询域名
allow-query { any; };
# forwarders指向上层DNS,需要单独添加,我在此次填写的网关
forwarders { 192.168.199.1; };
# 递归查询
recursion yes;
dnssec-enable no;
dnssec-validation no;
检查配置文件,正常情况无输出
[root@192-168-199-11 ~]# named-checkconf
配置主机域和业务域
修改域配置文件,在 /etc/named.rfc1912.zones
最下方添加如下内容
zone "host.com" IN {
type master;
file "host.com.zone";
allow-update { 192.168.199.11; };
};
zone "od.com" IN {
type master;
file "od.com.zone";
allow-update { 192.168.199.11; };
};
配置主机域数据文件
[root@192-168-199-11 ~]# cat /var/named/host.com.zone
$ORIGIN host.com.
$TTL 600 ; 10 minutes
@ IN SOA dns.host.com. dnsadmin.host.com. (
2020052701 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS dns.host.com.
$TTL 60 ; 1 minute
dns A 192.168.199.11
192-168-199-11 A 192.168.199.11
192-168-199-12 A 192.168.199.12
192-168-199-13 A 192.168.199.13
192-168-199-14 A 192.168.199.14
192-168-199-15 A 192.168.199.15
配置业务域数据文件
[root@192-168-199-11 ~]# cat /var/named/od.com.zone
$ORIGIN od.com.
$TTL 600 ; 10 minutes
@ IN SOA dns.od.com. dnsadmin.od.com. (
2020052701 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS dns.od.com.
$TTL 60 ; 1 minute
dns A 192.168.199.11
检查配置文件
[root@192-168-199-11 ~]# named-checkconf
启动服务
[root@192-168-199-11 ~]# systemctl start named
[root@192-168-199-11 ~]# systemctl enable named
验证
验证服务是否正常启动
[root@192-168-199-11 ~]# netstat -lnutp | grep 53
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1804/named
tcp 0 0 192.168.199.11:53 0.0.0.0:* LISTEN 1804/named
tcp6 0 0 ::1:953 :::* LISTEN 1804/named
udp 0 0 192.168.199.11:53 0.0.0.0:* 1804/named
测试通过 192.168.199.11
是否能够解析 192-168-199-14.host.com
[root@192-168-199-11 ~]# dig -t A 192-168-199-14.host.com @192.168.199.11 +short
192.168.199.14
修改所有主机的网卡配置文件,指定DNS1=192.168.199.11
,并重启网卡
修改 /etc/resolv.conf
文件,再第一行添加 search host.com
使其支持短域名。业务域不推荐使用短域名。
[root@192-168-199-15 ~]# cat /etc/resolv.conf
search host.com
nameserver 192.168.199.11
nameserver 223.5.5.5
测试
[root@192-168-199-15 ~]# ping 192-168-199-12
PING 192-168-199-12.host.com (192.168.199.12) 56(84) bytes of data.
64 bytes from 192.168.199.12 (192.168.199.12): icmp_seq=1 ttl=64 time=0.370 ms
[root@192-168-199-15 ~]# ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=49 time=12.3 ms
准备签发证书环境
准备所需软件
主要在 192.168,199.15
上操作,下载所需软件包,修改权限后并验证
# 下载所需软件包
[root@192-168-199-15 ~]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/bin/cfssl
[root@192-168-199-15 ~]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/bin/cfssl-json
[root@192-168-199-15 ~]# wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/bin/cfssl-certinfo
#修改权限
[root@192-168-199-15 ~]# chmod +x /usr/bin/cfssl*
#验证
[root@192-168-199-15 ~]# which cfssl
/usr/bin/cfssl
[root@192-168-199-15 ~]# which cfssl-json
/usr/bin/cfssl-json
[root@192-168-199-15 ~]# which cfssl-certinfo
/usr/bin/cfssl-certinfo
签发证书
创建生成 CA 证书签名请求(csr)的 JSON 配置文件
[root@192-168-199-15 ~]# vim /opt/certs/ca-csr.json
{
"CN": "OldboyEdu",
"hosts": [
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "beijing",
"L": "beijing",
"O": "od",
"OU": "ops"
}
],
"ca": {
"expiry": "175200h"
}
}
CN:一般写的是域名,非常重要,浏览器使用该字段验证网站是否合法
C:国家
ST:州,省
L:地区,城市
O:组织名称,公司名称
OU:组织单位名称,公司部门
expiry:证书过期时间
生成 CA 证书和私钥
[root@192-168-199-15 ~]# cd /opt/certs/
[root@192-168-199-15 certs]# cfssl gencert -initca ca-csr.json | cfssl-json -bare ca
# cfssl gencert -initca ca-csr.json 可生成密钥文件,通过管道的方式将生成的证书传输到文件中
# 主要使用的是ca.pem 和 ca-key.pem
[root@192-168-199-15 certs]# ll
total 16
-rw-r--r-- 1 root root 993 May 27 23:06 ca.csr
-rw-r--r-- 1 root root 328 May 27 22:59 ca-csr.json
# 根证书的私钥
-rw------- 1 root root 1679 May 27 23:06 ca-key.pem
# 根证书
-rw-r--r-- 1 root root 1346 May 27 23:06 ca.pem
部署Docker环境
主要在 192.168.199.13
、 192.168.199.14
、 192.168.199.15
三台主机上操作
安装并配置docker
安装 docker
[root@192-168-199-13 ~]# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
[root@192-168-199-14 ~]# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
[root@192-168-199-15 ~]# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
在已安装 docker
的主机上配置 docker
[root@192-168-199-13 ~]# mkdir -p /data/docker
[root@192-168-199-13 ~]# mkdir /etc/docker
[root@192-168-199-13 ~]# cat /etc/docker/daemon.json
{
"graph": "/data/docker",
"storage-driver": "overlay2",
"insecure-registries": ["registry.access.redhat.com","quay.io","harbor.od.com"],
"registry-mirrors": ["https://q2gr04ke.mirror.aliyuncs.com"],
"bip": "172.7.13.1/24",
"exec-opts": ["native.cgroupdriver=systemd"],
"live-restore": true
}
bip最好与主机相对应,当启动容器时,可以很方便判断出容器所在的主句。
192.168.199.13 ----- 172.7.13.1/24
192.168.199.14 ----- 172.7.14.1/24
192.168.199.15 ----- 172.7.15.1/24
启动并验证容器
[root@192-168-199-13 ~]# systemctl start docker
[root@192-168-199-13 ~]# systemctl enable docker
[root@192-168-199-13 ~]# docker info
[root@192-168-199-13 ~]# docker ps -a
部署Harbor仓库
主要在 192.168.199.15
上操作
准备工作
下载并解压 harbor
离线安装包
[root@192-168-199-15 ~]# tar xf harbor-offline-installer-v1.8.3.tgz -C /opt/
[root@192-168-199-15 opt]# mv harbor/ harbor-v1.8.3
[root@192-168-199-15 opt]# ln -s /opt/harbor-v1.8.3/ /opt/harbor
harbor的离线安装包可从github上下载
强烈建议使用1.7.6及其以上的版本,1.7.5及其以下版本有越权的bug,普通用户可能会获取到管理员的权限
修改配置文件 /opt/harbor/harbor.yml
,主要修改以下内容
[root@192-168-199-15 opt]# vim /opt/harbor/harbor.yml
# 一定要配置,否则 install 的时候会报错
hostname: harbor.od.com
# harbor的登录密码
harbor_admin_password: Harbor12345
# 会安装Nginx,把80端口让出来
port: 180
data_volume: /data/harbor
# 日志的位置
location: /data/harbor/logs
创建配置文件中所需的目录并安装 docker-compose
[root@192-168-199-15 opt]# mkdir -p /data/harbor/logs
[root@192-168-199-15 opt]# yum install docker-compose -y
安装并启动harbor
安装 harbor
[root@192-168-199-15 opt]# cd /opt/harbor
[root@192-168-199-15 harbor]# ./install.sh
查看启动的容器状态
[root@192-168-199-15 harbor]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------
harbor-core /harbor/start.sh Up
harbor-db /entrypoint.sh postgres Up 5432/tcp
harbor-jobservice /harbor/start.sh Up
harbor-log /bin/sh -c /usr/local/bin/ ... Up 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up 80/tcp
nginx nginx -g daemon off; Up 0.0.0.0:180->80/tcp
redis docker-entrypoint.sh redis ... Up 6379/tcp
registry /entrypoint.sh /etc/regist ... Up 5000/tcp
registryctl /harbor/start.sh Up
配置反向代理
安装并配置 Nginx
,使用 Nginx
反向代理 harbor
[root@192-168-199-15 harbor]# yum install nginx -y
[root@192-168-199-15 harbor]# cat /etc/nginx/conf.d/harbor.od.com.conf
server {
listen 80;
server_name harbor.od.com;
client_max_body_size 1000m;
location / {
proxy_pass http://127.0.0.1:180;
}
}
验证无报错后,启动 Nginx
[root@192-168-199-15 harbor]# nginx -t
[root@192-168-199-15 harbor]# systemctl start nginx
[root@192-168-199-15 harbor]# systemctl enable nginx
在 192.168.199.11
上配置 bind
使主机可以正常解析 harbor.od.com
,主要修改如下
[root@192-168-199-11 ~]# cat /var/named/od.com.zone
$ORIGIN od.com.
$TTL 600 ; 10 minutes
@ IN SOA dns.od.com. dnsadmin.od.com. (
# 前滚一个序号
2020052702 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS dns.od.com.
$TTL 60 ; 1 minute
dns A 192.168.199.11
# 添加 A 记录
harbor A 192.168.199.15
验证是否可以解析 harbor.od.com
[root@192-168-199-11 ~]# dig -t A harbor.od.com +short
192.168.199.15
WEB页面配置
登录 harbor
默认用户名为 admin
密码为 Harbor
,新建名称为 public
的公开项目
在 192.168.199.15
上,从官方 pull
一个镜像下来,并上传到私有仓库
[root@192-168-199-15 ~]# docker pull nginx:1.7.9
[root@192-168-199-15 ~]# docker tag 84581e99d807 harbor.od.com/public/nginx:v1.7.9
# 登录到私有仓库,否则无法上传成功
[root@192-168-199-15 ~]# docker login harbor.od.com
……
Login Succeeded
# 上传镜像到私有仓库
[root@192-168-199-15 ~]# docker push harbor.od.com/public/nginx:v1.7.9
私有仓库已存在刚刚上传的镜像