Nginx集群搭建
1.环境(个人环境):
1. 两台linux环境
2. nginx环境
3. tomcat环境
4. keepalived
2.好处
1. 解决单点故障问题
2. 提高并发量
3.搭建nginx集群
- 先在两台linux上先安装好nginx和keepalived这两个软件
1. 安装nginx可以去看 https://blog.csdn.net/YangH000001/article/details/120794532?spm=1001.2014.3001.5501 这篇博客,上面讲了怎么安装ngxin。
2. 安装keepalived软件
2.1 先去keepalived官网先去下载这个软件安装包https://www.keepalived.org/download.html 我这里使用的是Version 2.0.20的版本,并且上传linux上的opt目录下并解压。
2.2 然后进入keepalived目录下,执行 configure 脚本文件
./configure --sysconf=/etc --prefix=/usr/local
2.3 然后在执行make && make install 命令
2. 执行完上面的命令,进入到etc目录下就会产生一个keepalived文件夹,在keepalived文件夹下有一个keepalived.conf配置文件,这个所有的配置都需要在这个里面进行配置。
3. 在/usr/local/sbin目录下有一个keepalived的脚本文件
到目前为止,这个keepalived的软件就安装好了,看keepalived.conf配置文件。
4. 在两台linux虚拟机上分别安装好keepalived和nginx软件,在这两个keepalived软件中会有一个是MASTER主服务和一个BAKCUP从服务,当主服务出现问题宕机了的时候,从服务就会马上顶上去,变成主服务,并且可以设置配置文件发送邮件给运维人员来维护,在这两个keepalived中都会设置同一个虚拟IP,这个虚拟的IP提供用户去进行访问。
! Configuration File for keepalived
global_defs {
notification_email {
#邮件通知,当keepalived发送切换时可以发送email给具体的邮箱地址
zhangsan@qq.com
}
notification_email_from zhaomin@qq.com #设置发件人的邮箱信息
smtp_server 192.168.26.133 # 指定smpt服务地址
smtp_connect_timeout 30 # 设置连接超时时间
router_id LVS1 # 取一个id名
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface ens33 #网关名
virtual_router_id 51 # id,在这两台keepalived集群中,这个两个值需要是一样的
priority 100 # 这个设置的是权重值,当多个keepalived搭建的时候,BAKCUP根据这个值来决定谁来当MASTER
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.26.222 # 这个是虚拟IP地址,提供用户访问的,可以配置多个
}
}
! Configuration File for keepalived
global_defs {
notification_email {
sysadmin@qq.com
}
notification_email_from Alexandre.Cassen@qq.com
smtp_server 192.168.26.132
smtp_connect_timeout 30
router_id LVS
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.26.222
}
}
这里需要注意的是 vrrp_strict 上面这个key ,这个代表的是可以执行一段脚本文件,如果不添加下面这个配置脚本文件需要把这一行注释掉,否则会有问题。
下面的执行脚本可以解决:如果Nginx出现异常了,仅仅keepalived保持正常,是无法完成系统的正常工作的,因此需要根据业务进程的运行状态决定是否需要进行主备切换,可以通过编写脚本对业务进程进行检测监控。
# 可以创建一个这样的配置文件,并且在 vrrp_strict 中指定对应下面这个配置文件的地址
um=`ps -C nginx --no-header | wc -l`
if [ $num -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
killall keepalived
fi
fi
vrrp_strict 脚本名称
{
script "脚本位置"
interval 3 #执行时间间隔
weight -20 #动态调整vrrp_instance的优先级
}
- 最后去/usr/local/sbin目录下执行 ./keepalived 命令启动keepalived,记得关闭linux防火墙。
- 最后把nginx和keepalived都启动来后,可以去访问这个上面的配置的那个虚拟IP地址,然后看是否能访问成功,转到nginx下html默认的那个index.html文件。
- 到现在为止,可以能发现访问不了,这里就需要在linux执行命令 setenforce 0 ,这样就可以访问成功了。