Architecture.png

1、准备5台腾讯云CVM云服务器(CentOS 7.6 64位),下图为每台服务器实例的配置:

server_list.png
基建:用来部署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

  1. ##安装docker
  2. 关闭防火墙
  3. systemctl stop firewalld.service
  4. selinux置为失效
  5. vi /etc/selinux/config
  6. SELINUX=disabled
  7. 下载阿里云docker社区版yum
  8. cd /etc/yum.repos.d/
  9. wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  10. 查看docker安装包:yum list | grep docker
  11. 安装Docker Ce 社区版本:yum install -y docker-ce.x86_64
  12. 设置开机启动:systemctl enable docker
  13. 更新xfsprogsyum -y update xfsprogs
  14. 启动dockersystemctl start docker
  15. 查看版本:docker version查看详细信息:docker info
  16. 配置阿里云镜像加速器(申请地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)
  17. 申请好了修改docker配置文件:
  18. vi /etc/docker/daemon.json
  19. {
  20. "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],
  21. "log-driver":"json-file",
  22. "log-opts": {"max-size":"100m", "max-file":"3"}
  23. }
  24. xxx替换成自己的
  25. max-size=100m,意味着一个容器日志大小上限是500M
  26. max-file=3,意味着一个容器有三个日志,分别是id+.jsonid+1.jsonid+2.json
  27. 重启docker
  28. systemctl daemon-reload && systemctl restart docker
  29. 检查版本:docker --version
  30. ##安装docker-compose
  31. 下载docker-compose v2.1.1 docker-compose-linux-x86_64https://github.com/docker/compose/releases
  32. docker-compose-linux-x86_64重命名为docker-compose
  33. 然后将docker-compose拷贝至/usr/local/bin/下
  34. 检查版本:docker-compose --version

3、所有实例都需要设置swap交换分区(内存足够大则可以忽略这步)

  1. #查看分区
  2. free -h
  3. #生成交换分区文件(这里以4G内存为例,分区大小一般设置成物理内存的2倍)
  4. dd if=/dev/zero of=/swapfile bs=1024 count=8192k
  5. if(即输入文件,input file),of(即输出文件,output file);dev/zeroLinux的一种特殊字符设备(输入设备),可以用来创建一个指定长度用于初始化的空文件,如临时交换文件,该设备无穷尽地提供0,可以提供任何你需要的数目;bs=1024:单位数据块(block)同时读入/输出的块字节大小为1024个字节即1KBbs(即block size);count=2048000:数据块(block)数量为2048000 ,即20480001KB;可以计算swap分区的容量为:8Gdd命令里的单位M表示1024*1024k表示1024)。
  6. #检查分区文件大小
  7. ls -lh /swapfile
  8. #转换分区格式
  9. mkswap /swapfile
  10. #挂载交换分区
  11. swapon /swapfile
  12. #上面的挂载会在系统重启后失效,可通过编辑/etc/fstab永久生效
  13. sudo sh -c "echo '/swapfile swap swap defaults 0 0' >> /etc/fstab"
  14. #查看交换分区使用比例
  15. cat /proc/sys/vm/swappiness
  16. #设置交换分区使用比例(比例越大,表示更多的使用分区,其实这样不好,会造成物理内存浪费)
  17. sysctl vm.swappiness=50
  18. #上面的设置系统重启后失效,可通过编辑/etc/sysctl.conf永久生效
  19. sudo sh -c "echo 'vm.swappiness=50' >> /etc/sysctl.conf"
  20. #再次查看分区
  21. free -h

4、所有实例都需要运行python服务器监控脚本

  1. ## 设置时区(如果没设置,否则跑python脚本会报错)
  2. cat /etc/timezone #查看设置的是否是Asia/Shanghai,不是的话请修改成Asia/Shanghai
  3. vim /etc/timezone
  4. rm -f /etc/localtime
  5. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  6. ## 运行python服务器监控脚本(脚本从这里拉取:https://github.com/xlvchao/ok-system-helper)
  7. #安装依赖库
  8. pip3 install -r requirements.txt
  9. #如果安装时报错:如果报错提示#include Python.h...error:command 'gcc' failed with exit status 1
  10. sudo yum install python3-devel
  11. 然后重试 安装依赖库
  12. #运行脚本(记得修改各个机器上config.cnf里面的host地址)
  13. nohup python3 -u scheduled_task.py > scheduled_task.log 2>&1 &
  14. nohup python3 -u web_service.py > web_service.log 2>&1 &
  15. #查看所有运行中的python进程
  16. ps aux |grep python3
  17. 特别说明:这步需要在“部署文档”中的redismysql安装好之后再操作!!!

5、后续的安装基本都是采用docker/docker-compose,默认读者已经具备这两项基本能力。

如果搞不定,请加群讨论,扫码关注,发送“加群”
mp_qrcode.jpg