1、准备5台腾讯云CVM云服务器(CentOS 7.6 64位),下图为每台服务器实例的配置:
基建:用来部署redis、mysql、maxwell、rabbitmq、elasticsearch、logstash、kibana集群
组件:用来部署apollo、xxl-job、zipkin集群
应用:用来部署认证/授权服务器、网关/资源服务器,以及业务集群
LB1/LB2:用来部署keepalived+haproxy集群
采购前,请先创建好私有网络,然后购买时选择自己的私有网络,参考文档:https://cloud.tencent.com/document/product/215/36515
使用私有网络的好处是,服务器内部之间的通信全都走私有网络,速度可达1.5GB/s,快!
2、除了LB1/LB2外,其他实例都需要安装docker、docker-compose
##安装docker
关闭防火墙
systemctl stop firewalld.service
将selinux置为失效
vi /etc/selinux/config
SELINUX=disabled
下载阿里云docker社区版yum源
cd /etc/yum.repos.d/
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看docker安装包:yum list | grep docker
安装Docker Ce 社区版本:yum install -y docker-ce.x86_64
设置开机启动:systemctl enable docker
更新xfsprogs:yum -y update xfsprogs
启动docker:systemctl start docker
查看版本:docker version查看详细信息:docker info
配置阿里云镜像加速器(申请地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)
申请好了修改docker配置文件:
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],
"log-driver":"json-file",
"log-opts": {"max-size":"100m", "max-file":"3"}
}
将xxx替换成自己的
max-size=100m,意味着一个容器日志大小上限是500M
max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json
重启docker
systemctl daemon-reload && systemctl restart docker
检查版本:docker --version
##安装docker-compose
下载docker-compose v2.1.1 的 docker-compose-linux-x86_64:https://github.com/docker/compose/releases
将docker-compose-linux-x86_64重命名为docker-compose
然后将docker-compose拷贝至/usr/local/bin/下
检查版本:docker-compose --version
3、所有实例都需要设置swap交换分区(内存足够大则可以忽略这步)
#查看分区
free -h
#生成交换分区文件(这里以4G内存为例,分区大小一般设置成物理内存的2倍)
dd if=/dev/zero of=/swapfile bs=1024 count=8192k
if(即输入文件,input file),of(即输出文件,output file);dev/zero是Linux的一种特殊字符设备(输入设备),可以用来创建一个指定长度用于初始化的空文件,如临时交换文件,该设备无穷尽地提供0,可以提供任何你需要的数目;bs=1024:单位数据块(block)同时读入/输出的块字节大小为1024个字节即1KB,bs(即block size);count=2048000:数据块(block)数量为2048000 ,即2048000个1KB;可以计算swap分区的容量为:8G(dd命令里的单位M表示1024*1024,k表示1024)。
#检查分区文件大小
ls -lh /swapfile
#转换分区格式
mkswap /swapfile
#挂载交换分区
swapon /swapfile
#上面的挂载会在系统重启后失效,可通过编辑/etc/fstab永久生效
sudo sh -c "echo '/swapfile swap swap defaults 0 0' >> /etc/fstab"
#查看交换分区使用比例
cat /proc/sys/vm/swappiness
#设置交换分区使用比例(比例越大,表示更多的使用分区,其实这样不好,会造成物理内存浪费)
sysctl vm.swappiness=50
#上面的设置系统重启后失效,可通过编辑/etc/sysctl.conf永久生效
sudo sh -c "echo 'vm.swappiness=50' >> /etc/sysctl.conf"
#再次查看分区
free -h
4、所有实例都需要运行python服务器监控脚本
## 设置时区(如果没设置,否则跑python脚本会报错)
cat /etc/timezone #查看设置的是否是Asia/Shanghai,不是的话请修改成Asia/Shanghai
vim /etc/timezone
rm -f /etc/localtime
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
## 运行python服务器监控脚本(脚本从这里拉取:https://github.com/xlvchao/ok-system-helper)
#安装依赖库
pip3 install -r requirements.txt
#如果安装时报错:如果报错提示#include Python.h...error:command 'gcc' failed with exit status 1
sudo yum install python3-devel
然后重试 安装依赖库
#运行脚本(记得修改各个机器上config.cnf里面的host地址)
nohup python3 -u scheduled_task.py > scheduled_task.log 2>&1 &
nohup python3 -u web_service.py > web_service.log 2>&1 &
#查看所有运行中的python进程
ps aux |grep python3
特别说明:这步需要在“部署文档”中的redis、mysql安装好之后再操作!!!
5、后续的安装基本都是采用docker/docker-compose,默认读者已经具备这两项基本能力。
如果搞不定,请加群讨论,扫码关注,发送“加群”