Nginx keepalived实现高可用负载均衡详细配置步骤
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.5
Compiler : gcc
Preprocessor flags :
Compiler flags : -Wall -Wunused -Wstrict-prototypes -Wextra -g -O2
Linker flags :
Extra Lib : -lcrypto -lssl
Use IPVS Framework : Yes
IPVS use libnl : No
IPVS syncd attributes : No
IPVS 64 bit stats : No
fwmark socket support : Yes
Use VRRP Framework : Yes
Use VRRP VMAC : Yes
Use VRRP authentication : Yes
With ip rules/routes : Yes
SNMP vrrp support : No
SNMP checker support : No
SNMP RFCv2 support : No
SNMP RFCv3 support : No
DBUS support : No
SHA1 support : No
Use Debug flags : No
Stacktrace support : No
Memory alloc check : No
libnl version : None
Use IPv4 devconf : No
Use libiptc : No
Use libipset : No
init type : upstart
Build genhash : Yes
Build 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... yes
checking for linux/rtnetlink.h... yes
checking libnfnetlink/libnfnetlink.h usability... no
checking libnfnetlink/libnfnetlink.h presence... no
checking for libnfnetlink/libnfnetlink.h... no
configure: 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.rpm
wget 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.rpm
Preparing... ########################################### [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 keepalived global_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 keepalived global_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。
Nginx keepalived实现高可用负载均衡详细配置步骤的更多相关文章
- Haproxy+Keepalived高可用负载均衡详细配置
本文所使用的环境: 10.6.2.128 centos6.5 10.6.2.129 centos6.5 VIP 为10.6.2.150 要实现的目标: 实现10.6.2.128和10.6 ...
- Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)
说明 本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念. 两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由 ...
- Nginx+Keepalived+Tomcat高可用负载均衡,Zookeeper集群配置,Mysql(MariaDB)搭建,Redis安装,FTP配置
JDK 安装步骤 下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html rpm ...
- Nginx+Keepalived搭建高可用负载均衡集群
本文的重点是Keepalived的配置,Nginx的配置就简略带过.软件:CentOS 7.2 / Nginx 1.12.2 / Keepalived 1.3.9 ha-01:192.168.1.97 ...
- 搭建 Keepalived + Nginx + Tomcat 的高可用负载均衡架构
1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...
- Keepalived + Nginx + Tomcat 的高可用负载均衡架构搭建
Keepalived + Nginx + Tomcat 的高可用负载均衡架构搭建 Nginx 是一个高性能的 HTTP反向代理服务器 Keepalived 是一个基于VRRP协议来实现的LVS服务高可 ...
- 搭建Keepalived + Nginx + Tomcat的高可用负载均衡架构
1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...
- LVS+Keepalived 实现高可用负载均衡
前言 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时最常见的方式就是通过负载均衡来进行横向扩展.其中我们最常用的软件就是 Nginx.通过其反向代理的能力能够轻松实现负载均衡,当有服务出 ...
- haproxy+keepalived实现高可用负载均衡
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HA ...
随机推荐
- 关于ALTERA生成IP核卡住
最近搞fft,用的quartus13.1版本,发现quartus和modelism存在各种各样的坑啊,fftIP核大家可能也遇到过ip核 生成到一半就卡住的问题,之前我是通过换系统解决的,但是好景不长 ...
- PDF修改器
亲测可用的绿色版PDF修改器供大家分享使用 下载地址:http://pan.baidu.com/s/1pLPnhQb
- 再起航,我的学习笔记之JavaScript设计模式05(简单工程模式)
我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前几 ...
- 2.ssh密钥登陆(ssh无密码登陆)
1.A主机生成密钥对 ssh-keygen -t rsa 2.将A主机的公钥发给B主机 scp id_rsa.pub linux2:/cloud ...
- [SCOI2007]压缩 区间dp
明显是个区间dp,但是我区间dp就是个渣... f[i][j]表示区间i到j最短的字符长度:假设前面加了个M,所以初始化f[i][i]=2;当然最开始是不算M的,所以f[1][1]=1;然后就可以区间 ...
- salesforce 得到下拉列表控制依赖值的方法
salesforce中得到下拉列表的控制依赖值没有系统提供的方法.在网上找了一些,自己也编辑了一下. public static List<Integer> B64ToBytes (Str ...
- Xen创建新虚拟机
一.添加一个ISO存储: 右键选择"New Storage Repository-" 选择"ISO Library"中的"Windows File S ...
- 搭建 keras + tensorflow
每次搭建深度学习环境的总要搜索各类参考. 这次搭环境,自己做个记录.这样以后搭建环境就拿自己 的文章做主线索引. (如果参照我的博客安装的,欢迎转载分享 ) 1. 安装操作系统 (ubuntu-1 ...
- Qt支持中文显示
Qt支持中文显示<1>.在代码中添加以下代码 QTextCodec* codec = QTextCodec::codecForLocale(); if (codec != NULL) { ...
- [attribute|=value]和[attribute^=value]选择器区别
1.[attribute|=value] [attribute|=value]选择器说明:http://www.w3school.com.cn/cssref/selector_attribute_va ...