1、服务器内核版本必须3.10以上
#查看内核版本
cat /proc/version
2、关闭selinux或者安装container-selinux
vi /etc/selinux/config
config文件中,修改SELINUX的值为 disabled:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
3、关闭防火墙
#关闭防火墙
systemctl stop firewalld
#禁用防火墙
systemctl disable firewalld
#重启系统
reboot
curl -O https://download.docker.com/linux/static/stable/x86_64/docker-19.03.5.tgz
#解压刚下载的压缩包
tar -xzf docker-19.03.5.tgz
#将加压后的所有人间复制到/usr/bin下
cp docker/* /usr/bin
#授权
chmod +x /usr/bin/docker* \
/usr/bin/container* \
/usr/bin/runc \
/usr/bin/ctr
进入/etc/docker
目录(目录不存在则创建该目录mkdir -p /etc/docker
)
在该目录的 daemon.json
(文件不存在则创建该文件) 文件里添加下述内容
{
"data-root":"docker目录位置,自行设置,磁盘要够大",
"insecure-registries": ["不含证书的镜像仓库地址可以是多个", "如: 192.168.137.111:4000"]
}
#如下例:
{
"data-root":"/app/docker",
"insecure-registries": ["192.168.92.139:5000","192.168.92.139:5001"]
}
创建 docker.service
, 将该文件复制到 /usr/lib/systemd/system/
目录下
docker.service文件内容如下:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable docker
systemctl start docker
#创建docker用户组
groupadd docker
#新增hcf用户指定到用docker用户组
useradd hcf -g docker
usermod -aG wheel hcf
#设置hcf用户的密码(centos123)
passwd hcf
如果项目无docker镜像仓库,则需要部署镜像仓库,反之不需要,docker镜像仓库只需要部署一个即可
1、拉取sonatype/nexus3镜像
sudo docker pull sonatype/nexus3
2、将拉取的镜像保存为可以导入的压缩文件 nexus.tar.gz
sudo docker save sonatype/nexus3 |gzip -c > nexus.tar.gz
3、将上述导出的nexus.tar.gz文件复制到离线的服务器,运行下述命令导入镜像
这里模拟离线安装,将安装包导入离线服务器
sudo docker load --input nexus.tar.gz
4、运行nexus
mkdir -p /app/nexus-data | chmod -R 777 /app/nexus-data
sudo docker run --restart=unless-stopped -d
-p 5000-5010:5000-5010
-p 8081:8081
-v /app/nexus-data:/nexus-data
--name nexus sonatype/nexus3
#说明:
#-p 表示将服务器的端口与容器端口映射
#-v 表示将服务器的目录与容器的目录映射
#其中 nexus 映射的服务器路径要有权限
#其中8081端口是对应nexus的管理界面的端口
#5000-5010 表示5000到5010端口,后面创建私有仓库时端口必须在5000到5010之间
登录nexus控制台 IP:8081
其中8081为上一步映射的主机端口
服务器命令行进入/app/nexus-data
目录,查看 admin.password
文件,看admin用户的密码(51eab23c-ec10-4d1f-b720-e64d61685323)
其中:/app/nexus-data
是主机映射到容器目录/nexus-data
的目录
在 nexus 管理界面按提示步骤进行操作,进入控制台设置
1、首先登录管理平台,然后按照下列步骤创建docker仓库
http那里填写的端口必输是上面步骤里面容器里面的5000-5010端口之间,勾选允许匿名拉取镜像
然后点击下方按钮创建。
进入/etc/docker
目录,更改daemon.json
文件,在里面的insecure-registries
属性上添加刚刚创建的私有仓库地址
{
"data-root":"/app/docker",#docker安装目录
"insecure-registries":["192.168.92.138:5000"]#配置新创建的仓库地址
}
重启docker服务,然后登录私有仓库,看是否能够登录
#重启docker
systemctl restart docker
#登录私库
[root@localhost docker]# docker login 192.168.92.138:5000
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@localhost docker]#
1、从https://github.com/rancher/rancher/releases 选择指定的版本,下载**rancher-images.txt**
、rancher-load-images.sh 、rancher-save-images.sh 这三个文件
再将上述下载好的rancher-images.txt
和rancher-save-images.sh
两个文件放置于安装好dokcer并且能访问公网的服务器上。
2、在服务器上执行下述命令导出所需镜像
sh rancher-save-images.sh
执行完成后会存在一个名字为rancher-images.tar.gz
的压缩包
3、将上一步导出的rancher-images.tar.gz
和下载的rancher-images.txt
以及rancher-load-images.sh
文件拷贝至可以连接docker私有仓库并且安装了docker的服务器上
4、登录docker私有仓库
docker login 192.168.92.138:5000
5、执行下述命令将rancher所需的镜像上传到私有仓库
sh rancher-load-images.sh -r 192.168.92.138:5000/hcf
6、运行rancher服务
sudo docker run -d -p 9080:80 -p 9043:443 --restart=unless-stopped --name rancher-server 有仓库rancher/rancher镜像
#如:
sudo docker run -d
-p 9080:80
-p 9043:443
--restart=unless-stopped
--name rancher-server 192.168.92.138:5000/hcf/rancher/rancher:v2.3.2
#其中端口映射容器的80端口和443端口,具体使用什么端口映射请根据实际情况使用
打开rancher管理界面https://[宿主机ip]:[宿主机映射到rancher容器443端口的具体端口]
https://192.168.92.138:9043
进入管理界面按提示设置admin的密码。
设置创建集群拉取镜像的私有仓库地址
需要在 全局–系统设置–system-default-registry 这个值去设置私有仓库的地址,前提是私有仓库需要可以免密拉取
192.168.92.138:5050/hcf
在创建集群的时候指定这个集群拉取镜像的私有仓库,但是生成的注册主机命令中涉及到的rancher/rancher-agent
镜像是公网的镜像,需要手动更改为私有仓库的镜像。
添加集群--->自定义--->输入集群名称--->私有镜像仓库设置启用,高级选项中docke根目录设置为自己安装的docker根目录--->下一步
点击下一步后,跳转到如下页面,勾选Etcd、Control、Worker,然后复制下列的shell命令在虚拟机中执行,最后确认,等待拉取所需的镜像后集群就运行起来了。
1、导入下载好的apollo镜像文件(apollo-1.4.0.tar.gz)
sudo docker load --input apollo-1.4.0.tar.gz
2、将镜像push到私有仓库
#sudo docker tag apollo:1.4.0 私有仓库地址/命名空间/apollo:1.4.0
sudo docker tag apollo:1.4.0 192.168.92.139:5000/hcf/apollo:1.4.0
#sudo docker login 私有仓库地址 (登录过就可以不需要登录了)
sudo docker login 192.168.92.139:5000
#sudo docker push私有仓库地址/命名空间/apollo:1.4.0
sudo docker push 192.168.92.139:5000/hcf/apollo:1.4.0
1、导入mysql镜像,导入下载好的mysql镜像文件(mysql-5.7.tar.gz)
sudo docker load --input mysql-5.7.tar.gz
2、将镜像push到私有仓库
#sudo docker tag mysql:5.7 私有仓库地址/命名空间/mysql:5.7
sudo docker tag mysql:5.7 192.168.92.139:5000/hcf/mysql:5.7
#sudo docker login 私有仓库地址 (登录过就可以不需要登录了)
sudo docker login 192.168.92.139:5000
#sudo docker push 私有仓库地址/命名空间/mysql:5.7
sudo docker push 192.168.92.139:5000/hcf/mysql:5.7
1、创建数据目录
mkdir -p /app/mysql/conf
mkdir -p /app/mysql/logs
mkdir -p /app/mysql/data
chmod -R 777 /app/mysql
2、复制mysql配置文件mysqld.cnf
到 /app/mysql/conf
目录
cp mysqld.cnf /app/mysql/conf
3、运行Mysql
#sudo docker run -p 3306:3306 -d
#--restart=unless-stopped
#--name mysql
#-v /app/mysql/conf:/etc/mysql/conf.d
#-v /app/mysql/data:/var/lib/mysql
#-v /app/mysql/logs:/logs
#-e MYSQL_ROOT_PASSWORD=123456
#-d 私有仓库地址/命名空间/mysql:5.7
#例如:
sudo docker run -p 3306:3306 -d
--restart=unless-stopped
--name mysql
-v /app/mysql/conf:/etc/mysql/conf.d
-v /app/mysql/data:/var/lib/mysql
-v /app/mysql/logs:/logs
-e MYSQL_ROOT_PASSWORD=123456
-d 192.168.92.139:5000/hcf/mysql:5.7
#其中:
#-p 表示主机和容器的端口做映射
#-v 表示主机和容器目录进行挂载
#-e 表示设置容器环境变量的值,这里表示mysql root用户的密码
不出意外此时可以利用Navicat连接数据库。
创建数据库用户
CREATE USER hcf@'%' IDENTIFIED BY 'handhand';
CREATE USER hcf@'localhost' IDENTIFIED BY 'handhand';
GRANT ALL PRIVILEGES ON . TO hcf@'%';
GRANT ALL PRIVILEGES ON . TO hcf@'localhost';
flush privileges;
使用新建的用户登录
将下载好的apolloconfigdb.sql 、apolloportaldb.sql两个sql文件导入到数据库
sudo docker run -d --restart=unless-stopped -p 8170:8170 \
-p 8180:8180 \
-p 8190:8190 \
-e DEV_ADMIN_PORT=8190 \
-e DEV_CONFIG_PORT=8180 \
-e DEV_DB=jdbc:mysql://数据服务器ip:端口/apolloconfigdb?characterEncoding=utf8 \
-e DEV_DB_PWD=数据库用户密码 \
-e DEV_DB_USER=数据库用户名 \
-e DEV_IP=主机ip \
-e JAVA_OPTS=-Deureka.service.url=http://localhost:8180/eureka/ \
-e PORTAL_DB=jdbc:mysql://数据库ip:端口/apolloportaldb?characterEncoding=utf8 \
-e PORTAL_DB_PWD=数据库用户密码 \
-e PORTAL_DB_USER=数据库用户名 \
--name apollo 私有仓库地址/命名空间/apollo:1.4.0
##例如:
sudo docker run -d --restart=unless-stopped -p 8170:8170 \
-p 8180:8180 \
-p 8190:8190 \
-e DEV_ADMIN_PORT=8190 \
-e DEV_CONFIG_PORT=8180 \
-e DEV_DB=jdbc:mysql://192.168.92.139:3306/apolloconfigdb?characterEncoding=utf8 \
-e DEV_DB_PWD=handhand \
-e DEV_DB_USER= hcf \
-e DEV_IP=192.168.92.139 \
-e JAVA_OPTS=-Deureka.service.url=http://localhost:8180/eureka/ \
-e PORTAL_DB=jdbc:mysql://192.168.92.139:3306/apolloportaldb?characterEncoding=utf8 \
-e PORTAL_DB_PWD=handhand \
-e PORTAL_DB_USER=hcf \
--name apollo 192.168.92.139:5000/hcf/apollo:1.4.0
登录 http://主机ip:8170
,例如http://192.168.92.139:8170
用户名/密码 : apollo/amdin
点击 管理员工具—>系统信息
点击Check Health 中的check查看服务是否正常
下列以部署HCF-polaris为例
登录docker私有仓库
docker login 192.192.168.100:5000
执行下述命令将rancher所需的镜像上传到私有仓库
sh polaris-load-images.sh -r 192.168.137.100:5000/hcf
创建base服务的数据库
CREATE DATABASE IF NOT EXISTS hcf_base DEFAULT CHARACTER SET = utf8mb4;
创建mdata服务的数据库
CREATE DATABASE IF NOT EXISTS hcf_mdata DEFAULT CHARACTER SET = utf8mb4;
登录 rancher —> 选择集群 —> 选择项目—> 新建工作负载
设置环境变量
EUREKA_INSTANCE_HOSTNAME=register
JAVA_TOOL_OPTIONS=-Xmx512m -Dspring.profiles.active=init -Deureka.server.enable-self-preservation=false
SERVER_PORT=9070
登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
设置环境变量
JAVA_TOOL_OPTIONS=-Xmx512m -Dapollo.meta=http://192.168.92.138:8180
登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
(镜像是 rabbitmq:3.7.8-management )
登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
设置环境变量
JAVA_TOOL_OPTIONS=-Xmx512m -Dapollo.meta=http://192.168.92.139:8180
登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
设置环境变量
JAVA_TOOL_OPTIONS=-Xmx512m -Dapollo.meta=http://192.168.137.100:8180 -Dapollo.bootstrap.namespaces=common,application
登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
设置环境变量
JAVA_TOOL_OPTIONS=-Xmx512m -Dapollo.meta=http://192.168.137.100:8180 -Dapollo.bootstrap.namespaces=common,application
登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
设置环境变量
JAVA_TOOL_OPTIONS=-Xmx1200m -Dapollo.meta=http://192.168.137.100:8180 -Dapollo.bootstrap.namespaces=common,application
登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
设置环境变量
MAX_FILE_SIZE=100m
SERVER_NAME=网关的ip
访问http://IP:9081
使用admin登录,如果能登录成功则部署成功。