企业被网站收录,如何建设一个彩票网站,营销手机软件开发定制,物流网站开发公司目录 高可用集群搭建
Keepalived#xff0b;nginx实现web高可用
一.节点规划
二.基础准备
1.修改主机名
2.关闭防火墙和selinux服务
三.用keepalived配置高可用
1.安装nginx服务
2.修改nginx配置文件
3.启动nginx
4.访问nginx
5.安装keepalived服务
6.编辑配置文件…目录 高可用集群搭建
Keepalivednginx实现web高可用
一.节点规划
二.基础准备
1.修改主机名
2.关闭防火墙和selinux服务
三.用keepalived配置高可用
1.安装nginx服务
2.修改nginx配置文件
3.启动nginx
4.访问nginx
5.安装keepalived服务
6.编辑配置文件
7.编写nginx状态检测脚本
8.给脚本文件755权限
9.启动keepalived
10.测试高可用
(1)测试1
(2)测试2
(3)测试3
(4)测试4
(5)测试5 高可用集群搭建
Keepalivednginx实现web高可用
一.节点规划 IP 主机名 节点 192.168.77.130 Master 主节点 192.168.77.132 Backup 从节点 192.168.77.100 Vip地址
二.基础准备
1.修改主机名
主节点 Hostnamectl set-hostname master bash
从节点 Hostnamectl set-hostname backup bash
2.关闭防火墙和selinux服务 Systemctl stop firewalld Systemctl disable firewalld Setenforce 0
三.用keepalived配置高可用
1.安装nginx服务
主节点采用编译安装方式安装nginx,从节点采用yum方式安装nginx
主节点
安装编译环境依赖包 #安装c语言和编译安装的环境 Yum -y install gcc gcc-c make automake autoconf libtool zlib zlib-devel pcre pcre-devel openssl openssl-devel
安装nginx Wget http://nginx.org/download/nginx-1.13.7.tar.gz 没有wget的话需要先安装wget Yum -y install wget
解压nginx安装包 Tar -zxvf nginx-1.13.7.tar.gz
编译安装nginx Cd nginx-1.13.7 #./configure是运行nginx安装脚本 --prefix是配置安装路径 ./configure --prefix/usr/local/nginx #make make install开始编译安装 Make make install
从节点
安装nginx Yum -y install nginx
2.修改nginx配置文件
修改nginx首页面内容为节点的IP地址,方便后续测试观察
两台机器采用不同方式安装nginx配置文件路径会有不同
主节点 Vi /usr/local/nginx/html/index.html
修改配置为如下 body h1192.168.77.130/h1 从节点 Vi /usr/share/nginx/html/index.html
修改配置为如下 div idcontent h1192.168.77.132/h1 3.启动nginx
主节点 Cd /usr/local/nginx/sbin/ ./nginx 用netstat -ntpl命令查看是否有80端口 有则说明服务已启动 Netstat -ntpl #如果出现未找到命令,需要下载net-tools Yum -y install net-tools 从节点 Systemctl start nginx Systemctl status nginx Netstat -ntpl 4.访问nginx http://192.168.77.130 http://192.168.77.132 5.安装keepalived服务
主从节点 Yum -y install keepalived
6.编辑配置文件
红字为修改的地方 vi /etc/keepalived/keepalived.conf
编辑master节点配置文件(192.168.77.130) ! Configuration File for keepalived global_defs { #全局配置标识 notification_email { acassenfirewall.loc failoverfirewall.loc sysadminfirewall.loc } notification_email_from Alexandre.Cassenfirewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id 192.168.77.130 #路由id,不能重复,通常为hostname vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_script chk_nginx { script /etc/keepalived/nginx_check.sh #检测nginx状态的脚本路径 interval 2 #每2秒运行一次上面的脚本 } vrrp_instance VI_1 { state MASTER interface ens33 #网卡名称,与本机ip地址所在网卡名 virtual_router_id 51 称相同. priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { #设置虚拟ip 192.168.77.100 #设置vip为100 } track_script { #执行脚本 chk_nginx #对应vrrp_script配置的脚本 } }
编辑backup节点配置文件(192.168.77.132) ! Configuration File for keepalived global_defs { notification_email { acassenfirewall.loc failoverfirewall.loc sysadminfirewall.loc } notification_email_from Alexandre.Cassenfirewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id 192.168.77.132 vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_script chk_nginx { script /etc/keepalived/nginx_check.sh interval 2 } vrrp_instance VI_1 { state BACKUP #可选值为master或者backup interface ens33 virtual_router_id 51 priority 90 #定义优先级,数字越大优先级越高,ma advert_int 1 ster优先级必须要大于backup优先级 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.77.100 } track_script { chk_nginx } }
7.编写nginx状态检测脚本
两台虚拟机都要编写 Vi /etc/keepalived/nginx_check.sh
主节点 #!/bin/bash #时间变量用于记录日志 ddate --date today %Y%m%d_%H:%M:%S #计算nginx进程数量 nps -C nginx --no-heading|wc -l #如果进程为0则启动nginx并且再次检测nginx进程数量 #如果还为0说明nginx无法启动此时需要关闭keepalived if [ $n -eq 0 ]; then /usr/local/nginx/sbin/nginx n2ps -C nginx --no-heading|wc -l if [ $n2 -eq 0 ]; then echo $d nginx down,keepalived will stop /var/log/check_ng.log #杀掉keepalived是为了防止脑裂。脑裂指的是高可用集群中当主从切换时主上的keepalived还在启动会和从争抢VIP导致后台链接服务器时不知道连接哪台服务器好导致出错。 systemctl stop keepalived fi fi
从节点 #!/bin/bash #时间变量用于记录日志 ddate --date today %Y%m%d_%H:%M:%S #计算nginx进程数量 nps -C nginx --no-heading|wc -l #如果进程为0则启动nginx并且再次检测nginx进程数量 #如果还为0说明nginx无法启动此时需要关闭keepalived if [ $n -eq 0 ]; then systemctl start nginx ##因为是yum安装启动有点不一样 n2ps -C nginx --no-heading|wc -l if [ $n2 -eq 0 ]; then echo $d nginx down,keepalived will stop /var/log/check_ng.log systemctl stop keepalived fi fi
8.给脚本文件755权限 Chmod 755 /etc/keepalived/nginx_check.sh 9.启动keepalived Systemctl start keepalived #启动 Systemctl status keepalived #查看运行状态 Master节点成功标志 可以看到。Master节点已经获取到了vip 192.168.77.100
Backup节点成功标志 Backup节点上只有192.168.77.132这个ip是正常的
MASTER节点正常的情况下,BACKUP节点一定不会有浮动IP,也就是VIP只能同时在一个节点上。
10.测试高可用
为了区分master和backup两个角色我们需要先把两台机器的Nginx做一个区分其实编译安装的Nginx和yum安装的Nginx版本肯定不一样事实就是如此
通过curl -I来查看差异: (1)测试1
关闭master上的nginx服务 Cd /usr/local/nginx/sbin/ ./nginx -s stop Ps -aux | grep nginx 脚本可以再次启动nginx,无法关闭
还有一种情况通过彻底关闭nginx来实现放在测试五讲解
(2)测试2
在master上增加iptabls规则 Iptables -I OUTPUT -p vrrp -j DROP 可以发现master和backup上都出现了vip。在master上依旧有VIP,master上虽然被禁掉了VRRP协议,但它并不认为自己宕机了,所以不会释放VIP资源。如果master和backup都绑定了VIP,那么对外提供服务就会紊乱,这种情况被称为“脑裂”,这种情况是不允许发生的.
解决的话需要关闭master上的keepalived服务
恢复状态 Iptables -F
(3)测试3
关闭master上的keepalived服务 Systemctl stop keepalived 访问vip成功切换到从上。
(4)测试4
启动master上的keepalived服务 Systemctl start keepalived Vip又调回到了主上。
(5)测试5
彻底关闭nginx服务
需修改master的nginx配置文件 Vi /usr/local/nginx/conf/nginx.conf 我们在配置文件开头的woker和event前面添加个注释
测试完成后要修改回来
然后查看nginx进程
使用kill命令将nginx服务停掉 这时候我们再查看keepalived服务 能看到脚本使keepalived停掉了
然后在master和backup节点上查看ip 能看到vip成功转移到backup节点上,没有发生脑裂的情况。 至此测试完毕。