网络配置
1 | #修改IP为静态IP |
常用软件安装
1 | #查看所有已安装的软件包 |
开发软件安装
Zookeeper
1 | scp -o port=22 zookeeper-3.3.6.tar.gz root@192.168.8.128:/opt/zookeeper-3.3.6.tar.gz |
Redis
1 | wgwt http://download.redis.io/releases/redis-5.0.0.tar.gz |
MySQL
1 | #检查是否安装mariadb |
主从复制
1 | vi my.cnf |
主主复制
1 | vi my.cnf |
Keepalived
Keepalived是一个高性能的服务器高可用或热备解决方案,Keepalived主要用来解决服务器单点故障问题的,通过与Nginx、HAProxy等反向代理的负载均衡服务器配合可实现Web服务端的高可用。
1 | wget https://www.keepalived.org/software/keepalived-2.0.17.tar.gz |
MySQL高可用
Keepalived实现高可用的基本思路:集群中的MASTER和BACKUP角色能进行切换,是由priority和weight共同决定的。例如,初始状态时,MASTER节点的priority为100,BACKUP节点的priority为90,各个节点通过脚本监控各自的服务是否正常,如果监控到服务发生异常,则priority减少weight,这样,最大priority值的节点就会被选举为MASTER节点。所以,为了保证脚本执行成功或失败后能触发MASTER和BACKUP切换,通常设置weight的值大于MASTER与BACKUP节点的priority值之差。
1 | vi keepalived.conf |
RabbitMQ
1 | #安装Erlang运行环境 |
RabbitMQ集群
在集群默认模式下,集群中的各个节点保存有相同的元数据(队列的结构),而消息实体只存在其中一个节点上,当该节点发生故障后,其他节点就无法获取到还未消费的消息实体。
1 | #RabbitMQ集群依赖Erlang集群,而Erlang集群为保证不同节点可相互通信必须共享相同的Cookie |
RabbitMQ镜像队列
RabbitMQ的镜像队列机制是最简单的队列HA方案,它通过在集群的基础上增加ha-mode、ha-param等policy选项,可以根据需求将集群中的队列镜像到多个节点上,从而实现高可用,消除集群模式中队列内容单点故障带来的风险。该模式和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在客户端取数据时临时拉取。当然,该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉,所以通常在对可靠性要求较高的场合中适用。
1 | #将所有队列设置为镜像队列 |
HAProxy
HAProxy是可靠的、高性能的用于为基于TCP或HTTP的应用程序提供高可用、负载均衡和代理服务的解决方案,和Nginx(只支持HTTP)负载均衡类似。负载均衡是解决高性能
、单点故障(高可用)
、扩展性(水平伸缩)
的终极解决方案。
1 | wget https://www.haproxy.org/download/2.0/src/haproxy-2.0.1.tar.gz |
RabbitMQ负载均衡
1 | vi /usr/local/haproxy/haproxy.cfg |
Nginx
1 | wget http://nginx.org/download/nginx-1.18.0.tar.gz |
Nginx高可用
1 | vi keepalived.conf |
Nginx负载均衡
1 | vi nginx.conf |