1.服务器准备
(1)服务器规划
本地搭建测试时,以下各个节点配置为最低配置,本机内存推荐配置24GB以上。
名字 | IP | 内存 | 说明
---|---|---|---
hcf_node1 | 192.168.199.132 | 4G | 节点1服务器
hcf_node2 | 192.168.199.133 | 4G | 节点2服务器
hcf_rep | 192.168.199.134 | 4G | 资源服务器(私有仓库、配置中心、Git仓库)
hcf_images | 182.254.179.** | 2G | 能访问公网的服务器或电脑,用于构建镜像,这里直接用了腾讯云服务器
(2)基础设置
- 修改主机名(仅用于标识,可忽略)
默认的主机名是localhost,修改三台服务器的主机名hostnamectl set-hostname hcf-node1 hostnamectl set-hostname hcf-node2 hostnamectl set-hostname hcf-rep # 重启服务器 reboot - 关闭selinux
# 修改SELINUX的值为disabled vi /etc/selinux/config # 重启服务器 reboot
(3)确定工作目录
- 安装包目录
新建/hcf目录并赋权,后面系统部署相关的安装包全部放在/app目录下即可。mkdir /hcf chmod -R 777 /hcf - 工作目录
使用df -h命令查看存储区域挂载情况,项目实践过程中,服务器大多都是100G系统盘另外挂载一块较大的存储区域,在此块较大的存储盘上创建工作目录,用于存放HCF相关介质以及作为docker工作目录。如果误将工作目录建到了系统盘上,因系统盘一般较小,后面有可能存储空间不够 例如该台服务器,有一块200GB的存储空间挂载到了/sdb目录下,则应该新建/sdb/app/docker目录作为docker工作目录,新建/sdb/app/hcf目录用于存储系统部署介质。# 本地测试建在/下即可 # 创建docker工作目录 mkdir -p /app/docker # 创建存储部署介质的目录 mkdir /app/hcf chmod -R 777 /app
2.离线安装Docker
(1)上传一键安装脚本(内网安装)
- 将《1.docker_install.zip》上传/hcf目录下
- 解压
unzip 1.docker_install.zip
rm -rf 1.docker_install.zip
(2)执行安装脚本
cd 1.docker_install
sh install.sh
(3)在线安装Docker(内网忽略此步)
- 配置docker开机启动(在线安装)
systemctl enable docker.service
systemctl restart docker.service
3.添加docker配置文件
在hcf_node1、hcf_node2、hcf_rep三台服务器添加配置文件。
Docker Engine V1.12 之后版本,用户可以创建daemon.json文件对Docker Engine进行配置和调整。
打开 /etc/docker 目录(目录不存在则创建该目录)
编辑 daemon.json 文件(文件不存在则创建该文件)
// 配置docker工作目录为/app/docker(1.(3)确定的工作目录,默认工作目录为/var/lib/docker)
// 配置私有仓库地址,还未搭建私有仓库,所以这里随便写一个ip:port即可
// 配置阿里云镜像加速地址(如果服务器在内网中,则没有必要配置此项)
{
"data-root":"/app/docker",
"insecure-registries":["127.0.0.1:5000"],
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn", "https://9cpn8tt6.mirror.aliyuncs.com"]
}
重启docker
systemctl restart docker.service
4.配置防火墙
请不要直接暴力关闭防火墙
# 设置防火墙开机启动并启动防火墙
systemctl enable firewalld
systemctl start firewalld
# 在两台节点服务器执行以下语句(集群网络入口)
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=433/tcp
# 在hcf_node1服务器执行以下语句(rancher的管理端口)
firewall-cmd --permanent --zone=public --add-port=9043/tcp
firewall-cmd --permanent --zone=public --add-port=9080/tcp
firewall-cmd --permanent --zone=public --add-port=15672/tcp
# 在hcf_rep服务器执行以下语句(apollo的管理端口、apollo数据库端口)
firewall-cmd --permanent --zone=public --add-port=8170/tcp
firewall-cmd --permanent --zone=public --add-port=8180/tcp
firewall-cmd --permanent --zone=public --add-port=8190/tcp
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=8081/tcp
firewall-cmd --permanent --zone=public --add-port=10080/tcp
# 一般节点服务器间的网络需要完全打通,如果一定有防火墙限制,则在两台节点服务器执行以下语句
firewall-cmd --permanent --zone=public --add-port=2376/tcp
firewall-cmd --permanent --zone=public --add-port=2379/tcp
firewall-cmd --permanent --zone=public --add-port=2380/tcp
firewall-cmd --permanent --zone=public --add-port=8472/udp
firewall-cmd --permanent --zone=public --add-port=4789/udp
firewall-cmd --permanent --zone=public --add-port=9099/tcp
firewall-cmd --permanent --zone=public --add-port=6783/tcp
firewall-cmd --permanent --zone=public --add-port=6783-6784/udp
firewall-cmd --permanent --zone=public --add-port=6443/tcp
firewall-cmd --permanent --zone=public --add-port=10250-10252/tcp
firewall-cmd --permanent --zone=public --add-port=10254/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/udp
# 重启防火墙
firewall-cmd --reload
5.创建用户并授权
docker命令会使用Unix socket与Docker引擎进行通信,而只有root用户和docker组的用户才可以访问Docker引擎的Unix socket。
出于安全考虑,项目上不会直接使用root用户,所以需要创建用户并加入docker用户组。
#创建用户组
groupadd docker
#新增hcf用户并指定到docker用户组
useradd hcf -g docker
usermod -aG wheel hcf
#设置hcf用户的密码
passwd hcf
#重启服务器
reboot
后面应该全部使用hcf用户进行操作
6.离线安装nexus3
(1)导出nexus3镜像(可忽略)
在hcf_images腾讯云服务器执行以下命令将nexus3镜像保存为可以导入的压缩包:
docker pull sonatype/nexus3
docker save sonatype/nexus3 | gzip -c > nexus.tar.gz
(2)导入nexus3镜像
将【2.软件镜像/nexus.tar.gz】上传至hcf_rep服务器的/hcf目录下,执行命令:
docker load --input nexus.tar.gz
(3)运行nexus
在hcf_rep服务器执行以下命令启动nexus
# 创建目录存储nexus数据
mkdir -p /app/docker_volume/nexus-data
sudo chmod -R 777 nexus-data
# 运行nexus
docker run --restart=unless-stopped -d -p 5001:5001 -p 8081:8081 -v /app/docker_volume/nexus-data:/nexus-data --name nexus --privileged=true sonatype/nexus3
7.配置nexus(创建docker私有仓库)
(1)登录nexus控制台
- 浏览器访问 hcf_rep服务器IP:8081
- 在hcf_rep服务器查看/app/docker_volume/nexus-data/admin.password文件,获取admin用户的密码进行登录
- 登录后修改密码,设置允许匿名拉取镜像
(2)创建私有仓库
- Create repository
- 选择docker(hosted)
- 填写基本信息
注意HTTP必须填入5001端口,因为启动这个容器时映射的就是这个端口 - 点击Create repository
- 取消docker tocken
- 检查nexus配置是否正确
(3)配置私有仓库
以上我们已经创建好了私有仓库,地址是:hcf_rep服务器IP:5001
- 配置私有仓库地址
编辑hcf_node1、hcf_node2两台节点服务器的/etc/docker/daemon.json文件,配置私有仓库地址,之前我们是随便填了一个。 - 重启docker
sudo systemctl restart docker.service
(4)测试私有仓库
将【2.软件镜像/busybox.tar.gz】上传至hcf_node1服务器的/app/hcf目录下,将hcf_node1服务器中的busybox镜像上传到私有仓库中。
cd /app/hcf/
# 导入busybox镜像
docker load --input busybox.tar.gz
# 查看本地镜像
docker image ls
# 重命名这个镜像
docker tag busybox:latest 192.168.8.152:5001/hcf/busybox:latest
#登录到镜像仓库
docker login 192.168.8.152:5001
#上传
docker push 192.168.8.152:5001/hcf/busybox:latest