keepalived高可用+nginx负载均衡

keepalived高可用+nginx负载均衡

在这里插入图片描述

1、IP地址规划

hostnameip说明
KN0110.4.7.30keepalived MASTER节点 nginx负载均衡器
KN0210.4.7.31keepalived BACKUP节点 nginx负载均衡器
WEB0110.4.7.24web01节点
WEB0210.4.7.25web02节点

2、关闭防火墙,selinux,并安装nginx(四台虚拟机都要执行)

[root@web02 ~]# systemctl stop firewalld
[root@web02 ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux
[root@web02 ~]# setenforce 0                              //
[root@web02 ~]# yum -y install epel-release               //安装nginx之前要先安装nginx源
[root@web02 ~]# yum install -y nginx

3、配置并启动两个web节点。

[root@web02 ~]# echo "`hostname` `ifconfig ens33 |sed -n 's#.*inet \(.*\)netmask.*#\1#p'`" > /usr/share/nginx/html/index.html                          //将hostname和ip地址写进index.html,这是nginx的默认目录,用于后面测试使用
[root@web02 ~]#systemctl restart nginx                    //重启nginx服务
[root@web01 ~]# curl 10.4.7.24                            //查看页面内容
web01 10.4.7.24  
[root@web01 ~]# curl 10.4.7.25                            //查看页面内容             
web02 10.4.7.25  

4、配置两个nginx负载局衡器

1)修改nginx配置文件(KN01、KN02)
#修改/etc/nginx/nginx.conf文件。
http {upstream backend {server 10.4.7.24:80 weight=1 max_fails=3 fail_timeout=20s;    //权重为1server 10.4.7.25:80 weight=1 max_fails=3 fail_timeout=20s;    //权重为1,理论上访问两个web服务应该间隔访问}server {listen       80 default_server;listen       [::]:80 default_server;server_name  _;location / {proxy_pass http://backend;}}
}
2)、检查nginx配置文件,然后启动nginx
[root@kn01 ~]# which nginx
/usr/sbin/nginx
[root@kn01 ~]# /usr/sbin/nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@kn01 ~]# systemctl restart nginx
[root@kn01 ~]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)Active: active (running) since 二 2021-01-26 02:33:53 EST; 5h 59min agoMain PID: 57976 (nginx)CGroup: /system.slice/nginx.service├─57976 nginx: master process /usr/sbin/nginx├─57977 nginx: worker process└─57978 nginx: worker process1月 26 02:33:53 kn01 systemd[1]: Starting The nginx HTTP and reverse proxy server...
1月 26 02:33:53 kn01 nginx[57971]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
1月 26 02:33:53 kn01 nginx[57971]: nginx: configuration file /etc/nginx/nginx.conf test is successful
1月 26 02:33:53 kn01 systemd[1]: Started The nginx HTTP and reverse proxy server.
3)、查看两个节点nginx负载均衡器是否开启成功
[root@kn01 ~]# curl 10.4.7.30                                         //访问该服务的时候基本是1:1,说明负载均衡开启成功
web02 10.4.7.25  
[root@kn01 ~]# curl 10.4.7.30
web01 10.4.7.24  
[root@kn01 ~]# curl 10.4.7.31
web02 10.4.7.25  
[root@kn01 ~]# curl 10.4.7.31
web01 10.4.7.24  

5、安装、配置并启动keepalived,以KN01为例

[root@kn01 ~]# yum install keepalived -y
[root@kn01 ~]# vim /etc/keepalived/keepalived.conf       配置文件修改
[root@kn01 ~]# systemctl restart keepalived
1)MASTER节点配置(KN01)
vrrp_instance VI_1 {state MASTER                                     //修改为MASTERinterface ens33                                  //改为要设置虚拟IP的网卡名字virtual_router_id 51priority 100                                     //优先级advert_int 1authentication {auth_type PASSauth_pass 1111}nopreempt                                        //非抢占式,防止虚拟IP来回飘virtual_ipaddress {10.4.7.32/24 dev ens33 lable ens33:1         //设置虚拟IP}
}
2)BACKUP节点配置(KN02)
vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}nopreemptvirtual_ipaddress {10.4.7.32/24 dev ens33}
}
3)查看虚拟IP地址飘逸情况
[root@kn01 ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:11:af:f3 brd ff:ff:ff:ff:ff:ffinet 10.4.7.30/24 brd 10.4.7.255 scope global ens33valid_lft forever preferred_lft foreverinet 10.4.7.32/24 scope global secondary ens33valid_lft forever preferred_lft foreverinet6 fe80::b778:7955:18a9:b4d6/64 scope link valid_lft forever preferred_lft forever
[root@kn01 ~]# systemctl stop keepalived
[root@kn01 ~]# ip a                                     //IP地址10.4.7.32飘走
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:11:af:f3 brd ff:ff:ff:ff:ff:ffinet 10.4.7.30/24 brd 10.4.7.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::b778:7955:18a9:b4d6/64 scope link valid_lft forever preferred_lft forever
[root@kn02 ~]# ip a                                   //IP地址10.4.7.32飘到KN02节点
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:12:87:53 brd ff:ff:ff:ff:ff:ffinet 10.4.7.31/24 brd 10.4.7.255 scope global ens33valid_lft forever preferred_lft foreverinet 10.4.7.32/24 scope global secondary ens33valid_lft forever preferred_lft foreverinet6 fe80::961f:2027:a51:6df0/64 scope link valid_lft forever preferred_lft forever
[root@kn01 ~]# systemctl start keepalived
[root@kn01 ~]# ip a                                     //IP地址10.4.7.32并没有飘过来,因为我们设置了nopreempt属性。是非抢占式的,所以IP地址不会飘走,只有再KN02节点出现异常的时候才会飘过来。
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:11:af:f3 brd ff:ff:ff:ff:ff:ffinet 10.4.7.30/24 brd 10.4.7.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::b778:7955:18a9:b4d6/64 scope link valid_lft forever preferred_lft forever

6、keepalived中nginx运行状态监测脚本,

​ 当监控到nginx服务异常时,停止keepalived服务。这样虚拟IP就会飘到另外一个节点上,确保服务不断线,可靠运行。下面给出两种探测脚本

1)个人感觉下面脚本用来监测nginx运行状态比较实用。

优点:此脚本获得网页内容,然后判断nginx服务是否正常。
缺点:为判断获取的网页内容是否正确。待改进。

#!/bin/bash
curl 10.4.7.31 >> file
A=`cat file|wc -l`
if [ $A -eq 0 ];then/usr/sbin/nginxsleep 2curl 10.4.7.31 >> fileif [ `cat file |wc -l` -eq 0 ];thenkillall keepalivedfi
fi
cat /dev/null > file

运行killall命令需要安装psmisc包

yum install psmisc -y
2)此脚本检测nginx进程,不关注内容,若出现有进程但是页面加载不出来的情况,此脚本无用。
#!/bin/bash
A=`ps -C nginx --no-header|wc -l`
if [ $A -eq 0 ];then/usr/sbin/nginxsleep 2if [ `ps -C nginx --no-header|wc -l` -eq 0 ];thenkillall keepalivedfi
fi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos利用nexus搭建局域网docker私有仓库

centos利用nexus搭建局域网docker私有仓库 1、官网下载nexus oss版本 https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.29.2-02-unix.tar.gz [rootlocalhost bin]# wget https://sonatype-download.global.ssl.fastly.net/repo…

centos离线部署gitlab

centos离线部署gitlab 有的时候因为工作环境需要&#xff0c;不能够连接互联网。而我们工作时又需要使用git进行合作开发&#xff0c;这时就需要在内网部署一个git服务端。 1、下载依赖软件包 yum install --downloadonly --downloaddir/opt/repo curl policycoreutils-pyth…

centos离线安装jenkins

centos离线安装jenkins 1、安装java环境&#xff0c;这里我们选择openjdk&#xff0c;当然也可以是JDK [rootlocalhost repo]# yum install -y java2、下载jenkins的yum源的配置文件jenkins.repo [rootlocalhost repo]# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.j…

django开发环境搭建

django开发环境搭建 1、下载所需要的安装包 pycharm python3.7.9 2、安装pycharm python环境 3、Windows 安装mkvirtualenv虚拟python环境 pip install virtualenvwrapper-win4、下载必要的安装包&#xff08;只下载不安装&#xff09; pip download -d \home\packs virtu…

Java递归例子——求x的y幂次方

假设n的值大于0。 一&#xff1a;源程序&#xff1a; View Code packageone;publicclassRecursionTest {/*** paramargs*/publicstaticvoidmain(String[] args) {//TODO Auto-generated method stubRecursionTest rt newRecursionTest();intx 6;inty 2;longresult rt.getPower…

Android应用开发控件——Gallery和ImageSwitcher

Gallery组件主要用于横向显示图像列表&#xff0c;不过按常规做法。Gallery组件只能有限地显示指定的图像。也就是说&#xff0c;如果为Gallery组件指定了10张图像&#xff0c;那么当Gallery组件显示到第10张时&#xff0c;就不会再继续显示了。这虽然在大多数时候没有什么关系…

Windows7搭建FTP文件

Windows7搭建FTP文件 第一步&#xff1a;在任意一盘创建一个共享文件夹&#xff0c;这里我们把它命名为“ftp文件共享”&#xff0c;把需要共享的文件放里面&#xff0c;如图所示 第二步&#xff1a;安装IS组件 开始菜单→控制面板→程序→程序和功能→打开或关闭Windows功能…

Win7搭建http文件共享

Win7搭建http文件共享 作者&#xff1a;莫咸海 第一步&#xff1a;在除C盘以外的盘符中新建一个共享文件夹&#xff0c;命名为“http文件共享”&#xff1b; 将需要共享的文件放在“http文件共享”文件夹中。 第二步&#xff1a;安装IIS组件。开始菜单->控制面板->程序…

以命令方式从ftp服务器上下载和上传文件

** 以命令方式从ftp服务器上下载和上传文件 wang ** 1、“开始”→“运行”&#xff0c;输入“cmd“&#xff0c;打开命令提示符&#xff1b; 2、在命令提示符内输入”ftp“并回车&#xff0c;进入ftp提示符ftp> 3、在ftp>输入 open 192.168.2.5 回车&#xff1b; 如…

在windows环境下ftp服务器的文件上传和下载

在windows环境下ftp服务器的文件上传和下载 mo 一、上传本地文件 第一步&#xff1a;登录FTP服务器。在开始菜单中输入cmd&#xff0c;回车进入。输入ftp进入服务器&#xff0c;输入命令格式&#xff1a;open FTP服务器地址 端口&#xff0c;例如open 192.168.2.5 21 如果FTP端…

运维的未来之路:在技术革命中保持关键地位

在快速发展的IT界&#xff0c;运维工程师向来扮演着无可或缺的角色。他们不仅确保系统的平稳运行&#xff0c;还需要及时应对突发事件&#xff0c;优化各项技术实施。然而&#xff0c;伴随着技术的迭代和新工具的出现&#xff0c;一些人开始担忧35岁成为运维人员的职业半衰期。…

Ogre读取中文路径名的文件失败的解决办法

Ogre的文件读取是使用的标准库的io库读取的&#xff0c;众所周知的是&#xff0c;在vs2005是存在着bug的。因此想要一劳永逸的解决这个办法唯有去修改Ogre的源代码&#xff0c;以下为修改方法&#xff1a;打开OgreFileSystem.cpp文件&#xff0c;找到FileSystemArchive::open方…

硬盘类型的区分

硬盘接口类型的区分 1.IDE接口 IDE接口硬盘&#xff0c;IDE也称之为ATA接口&#xff0c;是一种比较老的接口硬盘&#xff0c;从刚开始生产至今&#xff0c;共推出了7个不同的版本&#xff0c;分别是&#xff1a;ATA-1 3.3MB/s、ATA-2 16.6MB/S、ATA-3 16.6MB/s、ATA-4 33MB/s…

bind配置文件解析

bind配置文件解析 bind作为一般的dns服务器的解析服务。 /etc/named.conf #bind的全局配置文件 /etc/named.rfc1912.zones #域配置文件 /var/named/ #存放zone&arpa文件 /var/log/messages #查看配置过程中出错信息 其中named.c…

tomcat配置多站点

下面关于TOMCAT6.0配置多站点的问题怎么解决&#xff1f; [互联网 Windows ] 收藏 转发至天涯微博 悬赏点数 10 3个回答 夏洛叶 2009-02-08 09:26:30 在F:\Tomcat 6.0\conf\server.xml配置是这样的,想同时启动5个站点, <Host name"bbb" debug"0" appB…

线程同步与异步套接字编程

1.利用事件对象来实现线程间的同步 新建一个win32 console application,取名Event,再建一个Event源文件&#xff0c;编辑&#xff1a; #include <iostream.h> #include <windows.h> DWORD WINAPI Fun1Proc(LPVOID lpParameter); DWORD WINAPI Fun2Proc(LPVOID lp…

电脑数据存储工具----光盘驱动器

作者&#xff1a;Liuweifei 电脑数据存储工具----光盘驱动器 光盘驱动器简称光驱&#xff0c;是电脑用来读写光盘内容的设备&#xff0c;也是在台式机和笔记本电脑里比较常见的一个硬件&#xff0c;随着移动存储设备的快速发展&#xff0c;光驱逐渐被其取代。 1. 光驱的类型…

认识和选购显卡

作者&#xff1a;Liuweifei 认识和选购显卡 显卡一般是一块独立的电路板&#xff0c;插在主板上接收由主机发出的控制显示系统工作的指令和显示内容的数字信号&#xff0c;然后通过输出模拟&#xff08;或数字&#xff09;信号控制显示器显示各种字符和图形&#xff0c;它和显…

多媒体融合通信平台促进公网和专网的互联互通

在发生诸如地震、洪涝灾害以及极端天气的情况下&#xff0c;由于通信设施和电力设施最容易遭到破坏&#xff0c;因此&#xff0c;在进行应急救援时&#xff0c;相关指挥部门最先想到的就是进行相应设施的抢修。 公网抢修成功&#xff0c;所有相关抢险救灾者都可以实现互相通话&…