博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx keepalived实现高可用负载均衡详细配置步骤
阅读量:5216 次
发布时间:2019-06-14

本文共 7550 字,大约阅读时间需要 25 分钟。

Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层、第4层和第7层交换机的功能。主要提供loadbalancing(负载均衡)和high-availability(高可用)功能,负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs),而高可用是通过VRRP协议实现多台机器之间的故障转移服务。 

 

主要讲述一下Keepalived编译和安装出现的问题以及解决方法,本人使用keepalived-1.3.5.tar.gz。

官网源码包下载地址(2017-07-31 Keepalived最新版keepalived-1.3.5.tar.gz):http://www.keepalived.org/download.html

[root@iZ256w2hluuZ local]# tar -zxvf /tmp/keepalived-1.3.5.tar.gz [root@iZ256w2hluuZ local]# cd keepalived-1.3.5/[root@iZ256w2hluuZ keepalived-1.3.5]# ./configure --prefix=/usr/local/keepalived

 

1. 系统出现警告信息“*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.”,具体日志如下:

Keepalived configuration------------------------Keepalived version       : 1.3.5Compiler                 : gccPreprocessor flags       : Compiler flags           : -Wall -Wunused -Wstrict-prototypes -Wextra -g -O2Linker flags             : Extra Lib                :  -lcrypto  -lssl Use IPVS Framework       : YesIPVS use libnl           : NoIPVS syncd attributes    : NoIPVS 64 bit stats        : Nofwmark socket support    : YesUse VRRP Framework       : YesUse VRRP VMAC            : YesUse VRRP authentication  : YesWith ip rules/routes     : YesSNMP vrrp support        : NoSNMP checker support     : NoSNMP RFCv2 support       : NoSNMP RFCv3 support       : NoDBUS support             : NoSHA1 support             : NoUse Debug flags          : NoStacktrace support       : NoMemory alloc check       : Nolibnl version            : NoneUse IPv4 devconf         : NoUse libiptc              : NoUse libipset             : Noinit type                : upstartBuild genhash            : YesBuild documentation      : No*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.

 

解决方案一:(在线安装)

执行yum命令yum -y install libnl libnl-devel解决上述警告问题

[root@iZ256w2hluuZ keepalived-1.3.5]# yum -y install libnl libnl-devel

 

解决方案二:(离线安装)

离线安装libnl-devel包,从网上下载libnl-devel-1.1.4-2.el6.x86_64.rpm包,执行rpm -ivh libnl-devel-1.1.4-2.el6.x86_64.rpm命令。

[root@iZ256w2hluuZ other-packages]# wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libnl-devel-1.1.4-2.el6.x86_64.rpm####执行wget命令是从另外一台可以连接外网的服务器上下载libnl-devel-1.1.4-2.el6.x86_64.rpm包的命令,可以忽略,只是为大家提供个下载libnl-devel地址####[root@iZ256w2hluuZ other-packages]# rpm -ivh libnl-devel-1.1.4-2.el6.x86_64.rpm Preparing...                ########################################### [100%]	package libnl-devel-1.1.4-2.el6.x86_64 is already installed

 

 

安装完成以后,重新执行configure命令

[root@iZ256w2hluuZ keepalived-1.3.5]# ./configure --prefix=/usr/local/keepalived

 

2. 系统出现错误信息“configure: error: libnfnetlink headers missing”,具体日志如下:

checking for nl_socket_modify_cb in -lnl... yeschecking for linux/rtnetlink.h... yeschecking libnfnetlink/libnfnetlink.h usability... nochecking libnfnetlink/libnfnetlink.h presence... nochecking for libnfnetlink/libnfnetlink.h... noconfigure: error: libnfnetlink headers missing

 

解决方案一:(在线安装)

执行yum命令yum install -y libnfnetlink-devel解决上述错误问题

[root@iZ256w2hluuZ keepalived-1.3.5]# yum install -y libnfnetlink-devel

 

解决方案二:(离线安装)

Linux执行wget下载rpm包(离线安装libnfnetlink包时所需rpm包,执行wget下载libnfnetlink rpm包命令,此步可以忽略,只是为大家提供个下载libnfnetlink地址),具体命令如下:

wget ftp://mirror.switch.ch/mirror/centos/6/os/x86_64/Packages/libnfnetlink-1.0.0-1.el6.x86_64.rpmwget ftp://mirror.switch.ch/mirror/centos/6/os/x86_64/Packages/libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm

执行rpm -ivh libnfnetlink-1.0.0-1.el6.x86_64.rpm命令安装libnfnetlink-1.0.0-1.el6.x86_64.rpm包,具体如下:

[root@iZ256w2hluuZ other-packages]# rpm -ivh libnfnetlink-1.0.0-1.el6.x86_64.rpm Preparing...                ########################################### [100%]   1:libnfnetlink           ########################################### [100%]

执行rpm -ivh libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm命令安装libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm包,具体如下:

[root@iZ256w2hluuZ other-packages]# rpm -ivh libnfnetlink-devel-1.0.0-1.el6.x86_64.rpmPreparing...                ########################################### [100%]   1:libnfnetlink-devel     ########################################### [100%]

 

安装完成以后,重新执行configure命令

[root@iZ256w2hluuZ keepalived-1.3.5]# ./configure --prefix=/usr/local/keepalived

 

3. 编译keepalived不会出现上述警告和其他错误,执行make && make install命令进行安装:

[root@iZ256w2hluuZ keepalived-1.3.5]# make && make install

至此Keepalived编译并安装结束,在下一篇文章中会详解介绍Nginx搭配Keepalived的详细配置和使用方法,欢迎大家收藏本站素文宅博客。

 

使用命令 /usr/local/keepalived/sbin -h 参看各启动参数,启动命令:

[root@iZ256w2hluuZ keepalived-1.3.5]# ./sbin/keepalived -f /usr/local/keepalived/etc/keepalived.conf

 

制作快捷启动,在源文件的目录./keepalived-1.3.5/keepalived/etc/init.d下有两个个快捷启动文件和生成/usr/local/keepalived目录下一个配置文件需要复制,具体执行如下命令:

[root@iZ256w2hluuZ keepalived-1.3.5]#  cp ./keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/init.d/[root@iZ256w2hluuZ keepalived-1.3.5]#  cp  /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/[root@iZ256w2hluuZ keepalived-1.3.5]#  cp ./keepalived-1.3.5/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived

这样就可以执行service keepalived [start | stop | reload | restart ]命令。

 

启动报“Starting keepalived: /bin/bash: keepalived: command not found”错误,具体日志如下:

[root@yoodb /]# service keepalived start正在启动 keepalived:/bin/bash: keepalived: command not found                                                           [失败]

解决方案:

[root@yoodb /]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/[root@yoodb /]# service keepalived start正在启动 keepalived:                                      [确定][root@yoodb /]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

有上述日志信息,表示启动成功。

 

前面我们已经讲述了Keepalived-1.3.5编译安装和制作快捷启动方式,下面主要说一说如何在两台服务器分布部署Nginx,通过keepalived实现高可用。

 

准备工作:

Linux操作系统Centos6.5,两台接入服务器公用一个虚拟IP(VIP)123.57.47.154

用途 IP
MASTER 192.168.1.1
BACKUP 192.168.1.2

 

配置Nginx

两台接入服务器Nginx配置完全相同,配置文件目录/usr/local/nginx/conf/nginx.conf,配置内容如下:

upstream blog.yoodb.com {       server  192.168.1.1;       server  192.168.1.2; }   server{     listen 80;     server_name blog.yoodb.com;     location / {         proxy_pass         http://127.0.0.1:8081;         proxy_set_header   Host             $host;         proxy_set_header   X-Real-IP        $remote_addr;         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;     } }

 

配置keepalived

keepalived的配置文件/etc/keepalived/keepalived.conf,注意主、从服务器的keepalived配置相关联有所不同,配置如下:

主Master:

! Configuration File for keepalivedglobal_defs {notification_email {        yoodb.com@gmail.com   }   notification_email_from yoodb.com@gmail.com   smtp_server smtp.gmail.com   smtp_connect_timeout 30   router_id nginx_master}vrrp_instance VI_1 {    state MASTER    interface eth0    virtual_router_id 51    priority 101    advert_int 1    authentication {        auth_type PASS        auth_pass 123456    }    virtual_ipaddress {        123.57.47.154    }}

 

从Backup:

! Configuration File for keepalivedglobal_defs {notification_email {        yoodb.com@gmail.com   }   notification_email_from yoodb.com@gmail.com   smtp_server smtp.gmail.com   smtp_connect_timeout 30   router_id nginx_backup}vrrp_instance VI_1 {    state BACKUP    interface eth0    virtual_router_id 51    priority 99    advert_int 1    authentication {        auth_type PASS        auth_pass 123456    }    virtual_ipaddress {        123.57.47.154    }}

 

验证:

先后启动主、从服务器上keepalived,执行/etc/init.d/keepalived start命令

利用ip a命令查看主服务器虚拟IP是否绑定成功

停止主服务器上的keepalived,执行/etc/init.d/keepalived stop命令访问123.57.47.154是否依然能够访问web页面,再次利用ip a命令查看从服务器虚拟IP是否绑定成功。

启动主服务器上的keepalived,看看主服务器能否重新接管虚拟IP。

转载于:https://www.cnblogs.com/MrYoodb/p/7503537.html

你可能感兴趣的文章
WEB_点击一百万次
查看>>
CodeForces - 878A Short Program(位运算)
查看>>
路冉的JavaScript学习笔记-2015年1月23日
查看>>
Mysql出现(10061)错误提示的暴力解决办法
查看>>
2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践
查看>>
NPM慢怎么办 - nrm切换资源镜像
查看>>
CoreData 从入门到精通(四)并发操作
查看>>
Swift - UIView的常用属性和常用方法总结
查看>>
Swift - 异步加载各网站的favicon图标,并在单元格中显示
查看>>
Java编程思想总结笔记Chapter 5
查看>>
[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
查看>>
WinForm聊天室
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
Linux升级内核教程(CentOS7)
查看>>
Lintcode: Partition Array
查看>>
分享适合个人站长的5类型网站
查看>>
类别的三个作用
查看>>