服务器环境安装
本文记录生产环境搭建服务器过程
服务器环境说明
服务器 | 主机名 | 作用 | 系统版本 | 内核版本 |
---|---|---|---|---|
10.148.30.160 | node60 | 集群管理者 | Centos7.6 | 3.10.0-957.21.3.el7.x86_64 |
10.148.30.161 | node61 | 集群节点 | Centos7.6 | 3.10.0-957.21.3.el7.x86_64 |
10.148.30.162 | node62 | 集群节点 | Centos7.6 | 3.10.0-957.21.3.el7.x86_64 |
服务器安装软件列表
- docker-18.09.7
- mysql-8.0.16
- jdk-8u211
修改主机名
1 | # 名称格式为: hostnamectl set-hostname xxx |
修改三台主机分别添加host解析, 在/etc/hosts
后面添加以下内容
1 | 10.148.30.160 node60 |
结果如图
测试是否生效
1 | ping node60 |
结果如图
配置RSA登录
ssh RSA登录,是一种免密登录远程主机方式,为了让局域网主机之间访问更方便和安全,开启RSA免密登录方式
生成RSA公钥和私钥
在node60上执行
1 | ssh-keygen -t rsa |
命令选项参数使用默认参数,一直按回车完成生成公钥!
将公钥存储到远程主机
1 | # i后面接的参数是保存你公钥的文件(我们这里是.ssh/id_rsa.pub); |
开启远程主机ssh的公钥登录
检查ssh服务的配置文件——/etc/ssh/sshd_config
1 | RSAAuthentication yes # 这行一定要取消注释的(删掉#号) |
网上好多教程说要重启ssh服务,额。我没重启也生效了呀
重启ssh服务命令1
systemctl restart sshd
如果想在node61和node62上做免密登录,也需要在node61和node62执行上述步骤
服务器分区
服务器硬盘分区 parted 硬盘分区
安装Docker
请查看docker安装教程 docker 安装教程
配置docker swarm集群
初始化swarm集群
在node60上初始化作为docker集群管理机1
2
3
4# 查看命令帮助
docker swarm init --help
# 创建swarm集群
docker swarm init --advertise-addr 10.148.30.160
结果如下图:
开放docker swarm通信端口
集群节点之间保证TCP 2377、TCP/UDP 7946和UDP 4789端口通信
分别在node60,node61,node62上开放防火墙端口
TCP端口2377集群管理端口
TCP与UDP端口7946节点之间通讯端口
TCP与UDP端口4789 overlay网络通讯端口
1 | firewall-cmd --zone=public --add-port=2377/tcp --permanent |
把另外两台主机加入到集群中
在node61,node62中执行初始化swarm集群的返回结果,上述图中红色圈出来的部分。
如果终端关闭或者退出了,可以在集群管理节点执行如下命令
1 | # 重新获取join-token |
在node61和node62执行结果如图
查看集群创建结果
在集群管理节点查看集群状态
1 | docker node ls |
结果如图
导入 docker rabbitmq redis 等镜像
从docker官网下载镜像成jar形式,上传到node61
1 | # 导入镜像 rabbitmq |
结果如图
配置registry仓库
请查看Docker仓库Docker-registry安装和简单配置 Docker仓库Docker-registry安装和简单配置
安装nginx
下载安装包 nginx官网
下载成功后上传到node611
2# 安装nginx
rpm -ivh nginx-1.9.8-1.el7.ngx.x86_64.rpm
nginx 配置文件目录 /etc/nginx
开启gzip压缩
1 | # sudo vim /etc/nginx/nginx.conf |
在 /etc/nginx/conf.d/default.conf
中配置反向代理1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27# 配置vue首页和代理
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.html?s=$1 last;
break;
}
root /usr/share/nginx/html;
index index.html index.htm;
}
# 配置java反向代理
location /api/v1/ {
proxy_pass http://localhost:8080/api/v1/; #来自jsp请求交给tomcat处理
proxy_redirect off;
proxy_set_header Host $host; #后端的Web服务器可以通过X-Forwarded-For>获取用户真实IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 6 32k; #proxy_buffers缓冲区,网页平均在32k以下的话>,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
}
上传前端代码到 /usr/share/nginx/html
安装java8
下载jdk8并上传到node60
删除Centos7自带的openjdk
1 | # 查看java是否存在 |
java 安装完毕
安装maven(可选)
下载并上传安装包, 二进制安装包
1 | # 解压安装包 |
软件部署
创建overlay网络1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 创建overlay网路
docker network create \
--driver overlay \
--subnet 192.168.20.0/24 \
--gateway 192.168.20.1 \
my-overlay
# 查看网络
[root@node60 compose]# docker network ls
NETWORK ID NAME DRIVER SCOPE
55b00935fbe5 bridge bridge local
37fc8530569b docker_gwbridge bridge local
498765e6727c host host local
xy0efm1wfmnn ingress overlay swarm
xslgt0x31q86 my-overlay overlay swarm
01415e574220 none
Over