新建一个集群启动脚本:
cd /data/consul touch service.sh # /data/consul/service.sh内容如下: nohup /data/consul/consul agent -config-file=http://www.likecs.com/data/consul/node1/consul_conf.json > /dev/null 2>&1 & sleep 10 nohup /data/consul/consul agent -config-file=http://www.likecs.com/data/consul/node2/consul_conf.json -retry-join=192.168.56.200:8311 > /dev/null 2>&1 & sleep 10 nohup /data/consul/consul agent -config-file=http://www.likecs.com/data/consul/node3/consul_conf.json -retry-join=192.168.56.200:8311 > /dev/null 2>&1 &如果集群启动成功,观察节点1中的日志如下:
通过节点1的HTTP端点访问后台管理页面如下(可见当前的节点1被标记了一颗红色的星星,说明当前节点1是Leader节点):
至此,Consul单机伪集群搭建完成(其实分布式集群的搭建大同小异,注意集群节点所在的机器需要开放使用到的端口的访问权限),由于Consul使用Raft作为共识算法,该算法是强领导者模型,也就是只有Leader节点可以进行写操作,因此接下来的操作都需要使用节点1的HTTP端点,就是192.168.56.200:8510。
重点笔记:如果Consul集群重启或者重新选举,Leader节点有可能发生更变,外部使用的时候建议把Leader节点的HTTP端点抽离到可动态更新的配置项中或者动态获取Leader节点的IP和端口。
Nginx编译安装直接从官网下载二级制的安装包并且解压:
mkdir /data/nginx cd /data/nginx wget tar -zxvf nginx-1.18.0.tar.gz解压后的所有源文件在/data/nginx/nginx-1.18.0目录下,编译之前需要安装pcre-devel、zlib-devel依赖:
yum -y install pcre-devel yum install -y zlib-devel编译命令如下:
cd /data/nginx/nginx-1.18.0 ./configure --prefix=http://www.likecs.com/data/nginx如果./configure执行过程不出现问题,那么结果如下:
接着执行make:
cd /data/nginx/nginx-1.18.0 make如果make执行过程不出现问题,那么结果如下:
最后,如果是首次安装,可以执行make install进行安装(实际上只是拷贝编译好的文件到--prefix指定的路径下):
cd /data/nginx/nginx-1.18.0 make installmake install执行完毕后,/data/nginx目录下新增了数个文件夹:
其中,Nginx启动程序在sbin目录下,logs是其日志目录,conf是其配置文件所在的目录。尝试启动一下Nginx:
/data/nginx/sbin/nginx然后访问虚拟机的80端口,从而验证Nginx已经正常启动:
通过nginx-upsync-module和nginx_upstream_check_module模块进行编译上面做了一个Nginx极简的编译过程,实际上,在做动态负载均衡的时候需要添加nginx-upsync-module和nginx_upstream_check_module两个模块,两个模块必须提前下载源码,并且在编译Nginx过程中需要指定两个模块的物理路径:
mkdir /data/nginx/modules cd /data/nginx/modules # 这里是Github的资源,不能用wget下载,具体是: nginx-upsync-module需要下载release里面的最新版本:v2.1.2 nginx_upstream_check_module需要下载整个项目的源码,主要用到靠近当前版本的补丁,使用patch命令进行补丁升级下载完成后分别(解压)放在/data/nginx/modules目录下:
ll /data/nginx/modules drwxr-xr-x. 6 root root 4096 Nov 3 2019 nginx_upstream_check_module-master drwxrwxr-x. 5 root root 93 Dec 18 00:56 nginx-upsync-module-2.1.2编译前,还要先安装一些前置依赖组件:
yum -y install libpcre3 libpcre3-dev ruby zlib1g-dev patch