nginx负载均衡nginx的高可用集群利用keepalive实现双vip
Posted 夏夏不吃糖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx负载均衡nginx的高可用集群利用keepalive实现双vip相关的知识,希望对你有一定的参考价值。
目录
一、什么是高可用HA?
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指通过设计,减少系统服务不可用的时间。也就是,一个业务不会因为某个设备或者点出现问题而导致整个业务不能正常运转,不能单点故障。
单点故障: 某些重要的应用,只有1个节点,如果这个节点出现故障,导致服务不可用。
高可用: high availability :至少有2个以上的节点提供服务,互相备份,其中的一个坏了,另外一个可用顶替。
master :主要的,对外提供服务的
backup :备份的,不对外提供服务,在master是好的情况下。一旦master挂了,backup马上就会接替master的工作,成为master
高可用的软件:keepalived 、HA Proxy、heartbeat
出现任何情况都可以运用到——HA
高可用的背后需要付出的代价: 投入很多的机器,互相之间做备份——资金投入高
二、负载均衡和高可用的区别?
负载均衡:将很多的请求分散到后端很多的服务器上,化解压力的一个软件
高可用: 有2个或者多个服务器(人)做相同的事情,互相备份。
三、keepalived的vrrp协议
keepalived的核心的技术点: vrrp协议和vip
虚拟路由器冗余协议(vrrp)原理:
VRRP将局域网内的一组路由器划分在一起,称为一个备份组。备份组由一个Master路由器和多个Backup路由器组成,功能上相当于一台虚拟路由器。局域网内的主机只需要知道这个虚拟路由器的IP地址,并不需知道具体某台设备的IP地址,将网络内主机的缺省网关设置为该虚拟路由器的IP地址,主机就可以利用该虚拟网关与外部网络进行通信。
Master路由的选举
备份组中路由器的优先级:
-
VRRP根据优先级来确定备份组中每台路由器的角色(Master路由器或Backup路由器)。优先级越高,则越有可能成为Master路由器。
-
当两台优先级相同的路由器同时竞争Master时,比较接口IP地址大小。接口地址大者当选为Master。
四、keepalived实现高可用的实验
一、nginx负载均衡器的安装以及设置
准备2台linux服务器 硬件配置尽量一致,两台server服务器。
1、安装2台nginx负载均衡器,需要安装nginx,使用脚本一键安装nginx所有的机器,server也要安装nginx。
先vim一个nginx的脚本,在bash执行脚本一键安装nginx,注意两台设备配置要一样!
[root@LB-2 nginx]# vim nginx-geoip.sh #创建脚本
[root@LB-2 nginx]# bash nginx-geoip.sh #执行脚本,编译安装nginx
#!/bin/bash
#解决软件的依赖关系,需要安装的软件包
yum -y install epel-release
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim geoip geoip-devel
#新建luogan用户和组
id xiayuzhen || useradd xiayuzhen -s /sbin/nologin
#下载nginx软件
mkdir /xiayuzhen99 -p
cd /xiayuzhen99
wget http://nginx.org/download/nginx-1.21.1.tar.gz
#解压软件
tar xf nginx-1.21.1.tar.gz
#进入解压后的文件夹
cd nginx-1.21.1
#编译前的配置
./configure --prefix=/usr/local/scxiayuzhen99 --user=xiayuzhen --group=xiayuzhen --with-http_ssl_module --with-threads --with-http_v2_module --with-http_stub_status_module --with-stream --with-http_geoip_module
#如果上面的编译前的配置失败,直接退出脚本
if (( $? != 0));then
exit
fi
#编译
make -j 2
#编译安装
make install
#修改PATH变量
echo "PATH=/usr/local/scxiayuzhen99/sbin:$PATH" >>/root/.bashrc
#执行修改了环境变量的脚本
source /root/.bashrc
#firewalld and selinux
#stop firewall和设置下次开机不启动firewalld
service firewalld stop
systemctl disable firewalld
#临时停止selinux和永久停止selinux
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
#开机启动
chmod +x /etc/rc.d/rc.local
echo "/usr/local/scxiayuzhen99/sbin/nginx" >>/etc/rc.local
#修改nginx.conf的配置,例如:端口号,worker进程数,线程数,服务域名
sed -i '/worker_processes/ s/1/2/' /usr/local/scxiayuzhen99/conf/nginx.conf
sed -i '/worker_connections/ s/1024/2048/' /usr/local/scxiayuzhen99/conf/nginx.conf
sed -i -r '36c \\\\tlisten 80;' /usr/local/scxiayuzhen99/conf/nginx.conf
sed -i -r '37c \\\\tserver_name www.xiayuzhen.com;' /usr/local/scxiayuzhen99/conf/nginx.conf
#killall nginx进程
#killall -9 nginx
#启动nginx
#/usr/local/scxiayuzhen99/sbin/nginx
2、配置nginx的负载均衡功能
找到修改nginx.conf 的配置文件:
[root@LB-2 nginx]# vim /usr/local/scxiayuzhen99/conf/nginx.conf
这里是LB负载均衡器的配置:
这里是sever服务器的配置:
3、启动nginx
4、注意一定要关掉防火墙和selinux
nginx的负载均衡配置完成之后,可以开始安装keepalived高可用软件了。
二、安装配置keepalived软件,两台负载均衡都要安装,配置一定要一样
1、安装keepalived软件
2、配置keepalived.conf文件,添加vip和相关信息
vip是virtual ip——虚拟ip
一台backup的keepalived的配置:
注意!!!里面的vrrp_strict 一定要注释掉!!!在global_defs模块里面!
一台master的keepalived的配置:
操作内容解释:
#vrrp_strict 注释掉
vrrp_instance VI_1 { 启动一个vrrp的实例 VI_1 实例名,可以自定义
state MASTER --》角色是master
interface ens33 --》在哪个接口上监听vrrp协议,同时绑定vip到那个接口
virtual_router_id 66 --》虚拟路由id(帮派) 0~255范围
priority 120 ---》优先级 0~255
advert_int 1 --》advert interval 宣告消息 时间间隔 1秒
authentication { 认证
auth_type PASS 认证的类型是密码认证
auth_pass 11112222 具体的密码,可以自己修改
}
virtual_ipaddress { --》vip的配置,vip可以是多个ip
192.168.138.198
}
}
3、启动keepalived软件并且看进程
service keepalived start 启动keepalived
不需要看端口, keepalived不监听具体的那个端口号,因为vrrp是组播通信
4、查看ip add 是否生效vip
首先看master配置的那台:
backup那台:
测试:可以通过浏览器访问设置好的虚拟vip 192.168.138.198 ,在后台查看日志看访问的到底是哪台。
上述就完成了高可用的vip设置!!
五、高可用keepalive的双vip的实现
跟单vip的方法差不多,再加一个master配置就可以了。
1、修改keepalived文件:
[root@LB-2 keepalived]# vim keepalived.conf
另外一台:
2、配置完之后,启动keepalived
3、查看ip add 是否生效两个vip
这样就实现高可用的双vip啦!!!
以上是关于nginx负载均衡nginx的高可用集群利用keepalive实现双vip的主要内容,如果未能解决你的问题,请参考以下文章
keepalived实现nginx的高可用 + nginx负载均衡
nginx实现请求的负载均衡 + keepalived实现nginx的高可用
nginx实现请求的负载均衡 + keepalived实现nginx的高可用