keepalived需要什么版本的gcc(keepalived安装配置)

http://www.itjxue.com  2023-02-20 13:54  来源:未知  点击次数: 

开启keepalived网络堵塞

开启keepalived分发堵塞,无法转发到后台realserver是么。

具体现象是,1、后台交易没有打印接收数据的相关日志,但接收到了keepalived的心跳包日志。2、keepalived的3个进程均存在,我们后台有监控进程。3、telnet虚拟ip,port无响应,通过重启keepalived后问题解决,想请教一下各位,是否碰到过类似情况。

能否帮忙分析分析,机器配置是redhat5.464位,软件版本,ipvsadm-1.24,keepalived-1.2.1。

:centos7 用什么版本的keepalived

一、环境介绍

1、这是我CentOS的版本,CentOS7.1,主备都为该版本

[root@localhost ~]# cat /etc/RedHat-release

CentOS Linux release 7.1.1503 (Core)

[root@localhost ~]# cat /proc/version

Linux version 3.10.0-229.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Fri Mar 6 11:36:42 UTC 2015

2、修改主机名并修改host

[root@localhost ~]# hostnamectl set-hostname node-01

[root@localhost ~]# vi /etc/hosts

127.0.0.1node-01在127后面添加node-01

二、拓扑图的规划:

A)

|------------IP地址-----------|----------|------软件------|----------|-状态-|

|172.21.4.51(VIP:172.21.4.44 )|----------|keepalived+nginx|----------|Master|

|172.21.4.52(VIP:172.21.4.44 )|----------|keepalived+nginx|----------|Backup|

|---------172.21.4.91---------|----------|------IIS-------|----------|-Web1-|

|---------172.21.4.91---------|----------|------IIS-------|----------|-Web2-|

B)

Internet--

|

=============

| ISP Router|

=============

| |

| |---- Web1 (172.21.4.91)

|-HA-|eth0-- 172.21.4.51 |

| \ /

| \ /

| ===VIP(172.21.4.44)===

| / \

| / \

|-HA-|eth0-- 172.21.4.52 |

|---- Web2 (172.21.4.92)

|

注:在网关上已针对VIP(172.21.4.44)作了80端口映射。

此架构需考虑的问题:

1、Master运行,则Master占有vip且Nginx能够正常服务;

2、Master挂了,则Backup抢占vip且Nginx能够正常服务;

3、任何一台前端nginx服务挂了,则vip资源转移到另一台服务器上,并发送提醒邮件;

4、nginx需要检测后端服务器的健康状态(由于应用是挂在默认网站下的虚拟目录,且无法更改,必须能够对虚拟目录进行健康检查)

5、由于应用需要Session保持,但由于没有做Session共享,实际服务器角色转换时,应用会受到一定的影响。

linux keepalived怎么启动

一、环境说明

1、操作系统内核版本:2.6.9-78.ELsmp

2、Keepalived软件版本:keepalived-1.1.20.tar.gz

二、环境配置

1、主Keepalived服务器IP地址 192.168.111.223

2、备Keepalived服务器IP地址 192.168.111.100

3、Keepalived虚拟IP地址 192.168.111.150

怎么搭建keepalived的环境

使用MySQL双master+keepalived是一种非常好的解决方案,在MySQL-HA环境中,MySQL互为主从关系,这样就保证了两台MySQL数据的一致性,然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换。

下面,我把即将上线的一个生产环境中的架构与大家分享一下,看一下这个架构中,MySQL-HA是如何实现的,环境拓扑如下

MySQL-VIP:10.10.10.21

MySQL-master1:10.10.10.17

MySQL-master2:10.10.10.18

OS版本:Redhat6.2

MySQL版本:mysql-5.1.59

Keepalived版本:keepalived-1.1.20

一、MySQL master-master配置

1、修改MySQL配置文件

两台MySQL均如要开启binlog日志功能,开启方法:在MySQL配置文件[MySQLd]段中加上log-bin=MySQL-bin选项

两台MySQL的server-ID不能一样,默认情况下两台MySQL的serverID都是1,需将其中一台修改为2即可

Master1配置:

#vim /etc/myf

log-bin=mysql-bin //开启binlog日志功能

log =/usr/local/mysql/var/mysql.log //会打印mysql的所以sql语句

server-id= 1 //

binlog-do-db =mysql //需要同步的库名称

auto-increment-increment= 2

auto-increment-offset= 2

Master2配置:

#vim /etc/myf

log-bin=mysql-bin //开启binlog日志功能

log =/usr/local/mysql/var/mysql.log //会打印mysql的所以sql语句

server-id= 2

binlog-do-db =mysql //需要同步的库名称

auto-increment-increment= 2

auto-increment-offset= 2

2、建授权用户

在10.10.10.17上新建授权用户

grant replicationslave on *.* to test@’10.10.10.%’ identified by ‘’;

在10.10.10.18服务器上建授权用户

grant replicationslave on *.* to test@’10.10.10.%’ identified by ‘’;

3、将10.10.10.17设为10.10.10.18的主服务器

在10.10.10.18上将10.10.10.17设为自己的主服务器

mysql show master status;(17服务器配置)

1+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.| 106|mysql | |

+------------------+----------+--------------+------------------+

1 row in set (0.01 sec)

MySQL change master to master_host='10.10.10.17',master_user=’test’,master_password='',master_log_file='MySQL-bin.',master_log_pos=106;

Query OK, 0 rows affected (0.05 sec)

MySQL start slave;

Query OK, 0 rows affected (0.00 sec)

mysql show slave status \G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes \\如果此2项都为yes,master-master配置即成功

将10.10.10.18设为10.10.10.17的主服务器 方法与上面设置一致只需将

在10.10.10.17上将10.10.10.18设为自己的主服务器

mysql show master status;(18服务器配置)

1+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.| 106|mysql | |

+------------------+----------+--------------+------------------+

1 row in set (0.01 sec)

MySQL change master to master_host='10.10.10.18',master_user=’test’,master_password='',master_log_file='MySQL-bin.',master_log_pos=106;

Query OK, 0 rows affected (0.05 sec)

MySQL start slave;

Query OK, 0 rows affected (0.00 sec)

mysql show slave status \G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes \\如果此2项都为yes,master-master配置即成功

测试是否成功:

如上述均正确配置,现在在任何一台MySQL上更新数据都会同步到另一台MySQL(仅限mysql库)

二、keepalived安装及配置

1、10.10.10.17服务器上keepalived安装及配置

安装keepalived

#tar zxvfkeepalived-1.1.20.tar.gz

#cdkeepalived-1.1.20

#./configure--prefix=/usr/local/keepalived--with-kernel-dir=/usr/src/kernels/2.6.32-220.el6.x86_64

#make make install

配置keepalived

我们自己在新建一个配置文件,默认情况下keepalived启动时会去/etc/keepalived目录下找配置文件

#mkdir/etc/keepalived

#vi/etc/keepalived/keepalived.conf

global_defs {

notification_email {

}

smtp_server 127.0.0.1 (如果本机配置的话)

smtp_connect_timeout 30

router_id MySQL-ha

}

vrrp_instance VI_1{

state BACKUP #两台配置此处均是BACKUP

interface p4p1 #注意网卡接口

virtual_router_id 51

priority 100 #优先级,另一台改为90

advert_int 1

nopreempt #不主动抢占资源,只在优先级高的机器上设置即可,优先级低的机器不设置

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.10.10.21

}

}

virtual_server10.10.10.21 3306 {

delay_loop 2 #每个2秒检查一次real_server状态

lb_algo wrr #LVS算法

lb_kind DR #LVS模式

persistence_timeout 60 #会话保持时间

protocol TCP

real_server 10.10.10.17 3306 {

weight 3

notify_down /usr/local/my/my.sh #检测到服务down后执行的脚本

TCP_CHECK {

connect_timeout 10 #连接超时时间

nb_get_retry 3 #重连次数

delay_before_retry 3 #重连间隔时间

connect_port 3306 #健康检查端口

}

}

编写检测服务down后所要执行的脚本

#vi/usr/local/MySQL/bin/MySQL.sh

#!/bin/sh

pkillkeepalived

#chmod +x/usr/local/MySQL/bin/MySQL.sh

注:此脚本是上面配置文件notify_down选项所用到的,keepalived使用notify_down选项来检查real_server的服务状态,当发现real_server服务故障时,便触发此脚本;我们可以看到,脚本就一个命令,通过pkill keepalived强制杀死keepalived进程,从而实现了MySQL故障自动转移。另外,我们不用担心两个MySQL会同时提供数据更新操作,因为每台MySQL上的keepalived的配置里面只有本机MySQL的IP+VIP,而不是两台MySQL的IP+VIP

启动keepalived

#/usr/local/keepalived/sbin/keepalived–D

#ps -aux | grepkeepalived

测试

找一台局域网PC,然后去ping MySQL的VIP,这时候MySQL的VIP是可以ping的通的

停止MySQL服务,看keepalived健康检查程序是否会触发我们编写的脚本

1、10.10.10.18服务器上keepalived安装及配置

安装keepalived

#tar zxvfkeepalived-1.1.20.tar.gz

#cdkeepalived-1.1.20

#./configure--prefix=/usr/local/keepalived--with-kernel-dir=/usr/src/kernels/2.6.32-220.el6.x86_64

#make make install

配置keepalived

我们自己在新建一个配置文件,默认情况下keepalived启动时会去/etc/keepalived目录下找配置文件

#mkdir/etc/keepalived

#vi/etc/keepalived/keepalived.conf

global_defs {

notification_email {

}

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id MySQL-ha

}

vrrp_instance VI_1{

state BACKUP #两台配置此处均是BACKUP

interface p4p1 #注意网卡接口

virtual_router_id 51

priority 90 #优先级,另一台改为90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.10.10.21

}

}

virtual_server10.10.10.21 3306 {

delay_loop 2 #每个2秒检查一次real_server状态

lb_algo wrr #LVS算法

lb_kind DR #LVS模式

persistence_timeout 60 #会话保持时间

protocol TCP

real_server 10.10.10.18 3306 {

weight 3

notify_down /usr/local/my/my.sh #检测到服务down后执行的脚本

TCP_CHECK {

connect_timeout 10 #连接超时时间

nb_get_retry 3 #重连次数

delay_before_retry 3 #重连间隔时间

connect_port 3306 #健康检查端口

}

}

启动keepalived

#/usr/local/keepalived/sbin/keepalived–D

#ps -aux | grepkeepalived

测试

停止MySQL服务,看keepalived健康检查程序是否会触发我们编写的脚本

三、测试

两台MySQL服务器都要授权允许从远程登录

MySQL grantall privileges on *.* to andyguo@'%' identified by '';

Query OK, 0 rowsaffected (0.00 sec)

MySQL flushprivileges;

Query OK, 0 rowsaffected (0.00 sec)

keepalived故障转移测试:

在windows客户端一直去ping VIP,然后关闭10.10.10.17上的keepalived,正常情况下VIP就会切换到10.10.10.18上面去

开启10.10.10.17上的keepalived,关闭10.10.10.18上的keepalived,看是否能自动切换,正常情况下VIP又会属于10.10.10.17

注:keepalived切换速度还是非常块的,整个切换过程只需1-3秒

MySQL故障转移测试:

在10.10.10.17上关闭MySQL服务,看VIP是否会切换到10.10.10.18上

开启10.10.10.17上的MySQL和keepalived,然后关闭10.10.10.18上的MySQL,看VIP是否会切换到10.10.10.17上

如果都没问题,到此整个配置即已完成。

备注(在测试的过程中遇到了一些问题,解决方法)

Keepalived_healthcheckers:IPVS: Can't initialize ipvs: Protocol not available

起初重装了ipvsadm和keepalived,但故障依旧,随后突然想到是否lvs模块加载异常,于是lsmod|grep ip_vs发现果然没有相应的模块,而正常情况下应该是有的

e、手动加载ip_vs模块

modprobe ip_vs

modprobe ip_vs_wrr

f、重启keepalived服务,故障排除,此时转发正常,从服务器的ip_vs加载正常,主从切换也正常

g、将modprobeip_vs、modprobe ip_vs_wrr添加进/etc/rc.local开机自动加载

Linux Keepalived双机热备

本文使用的是 VMware Workstation 15 Player ,创建两个虚拟机,分别命名为 CentOS 7 64位 M 和 CentOS 7 64位 B ,M表示"master"主服务器,B表示"backup"备用服务器。

网络连接选择 NAT模式 ,启动后使用 ip add 发现没有自动分配ip地址,是因为CentOS 7默认是不启动网卡的,解决方法如下:

打开配置文件,把 ONBOOT=no 这一项改为 ONBOOT=yes ,然后 :wq 保存退出,然后重启网络服务:

这时候再输入 ip add 会发现ip地址有了。

本文Master ip为 192.168.56.131 ,Bcakup ip为 192.168.56.132 。

虚拟ip(vip)定义为 192.168.56.188 。

安装gcc

进入nginx-1.6.2并执行configure文件

成功后会在/usr/local/nginx目录下看到 conf、html、logs、sbin 四个目录。

启动命令:

停止命令:

重启命令:

使用如下命令查看相关端口是否已启动Nginx

浏览器输入Master的ip地址: ,出现Nginx的欢迎页面即成功启用Nginx。

同理,Backup浏览器输入: ,同样出现Nginx的欢迎页面。

注意这个地方,html中最后一行 "Thank you for using nginx." 本文针对Master和Backup分别进行了修改便于热备时更好的区分服务是否切换成功,修改的文件在

如果启动成功,但进入不了欢迎页面,则可能需要关闭firewalld防火墙:

进入keepalived-1.2.18并执行configure文件

在 /etc/ 目录下创建keepalived文件夹

将keepalived配置文件复制到/etc/keepalived下

将keepalived脚本文件复制到/etc/相关目录下

创建keepalived软链接

设置开机启动

安装完毕。

进入/etc/keepalived/目录下打开keepalived.conf文件进行修改

在/etc/keepalived/目录下创建sh脚本文件

1、安装nano

2、使用nano创建nginx_check.sh脚本

3、打开nginx_check.sh并编辑如下内容

(注意`符号,非'符号)

4、脚本授权

安装并配置完毕后,可以分别启动两台虚拟机上的Nginx和Keepalived进行热备的验证了。

启动Nginx:

启动Keepalived:

关闭Keepalived:

查看nginx进程:

查看keepalived进程:

分别启动Nginx和Keepalived后,Master输入 ip add 查看ip多了一个 192.168.56.188

打开浏览器输入ip地址: 看到Nginx的欢迎页面

此时nginx131说明为主节点。

然后我们将Keepalived关闭

或kill掉Nginx进程,因为有nginx_check.sh脚本会检测如果没有Nginx进程运行也会自动将Keepalived关闭

会发现,节点由Master切换到了Backup:

热备成功。

(责任编辑:IT教学网)

更多

推荐MYSQL文章