一 基础环境

1.1 IP规划

OS:CentOS 6.8 64位
节点类型
IP规划
主机名
类型
主 Director Server
eth0:172.24.8.10
DR1
公共IP
eth1:192.168.56.100
心跳
私有IP
eth0:0:172.24.8.100
虚拟IP
主 Director Server
eth0:172.24.8.11
DR2
公共IP
eth1:192.168.56.101
心跳
私有IP
Real Server 1
eth0:172.24.8.12
rs1
公共IP
lo:0:172.24.8.100
虚拟IP
Real Server 1
eth0:172.24.8.13
rs2
公共IP
lo:0:172.24.8.100
虚拟IP

1.2 架构规划

二 高可用LVS负载均衡集群部署

2.1 NTP部署

操作略,具体可参考N01.1.1-常见服务《NTP》。
注意:为了保证集群的稳定性,强烈建议在所有节点均部署NTP同步服务,保证所有时钟一致。

2.2 部署httpd集群

 [root@RServer01 ~]# yum -y install httpd
[root@RServer01 ~]# service iptables stop
[root@RServer01 ~]# chkconfig iptables off
[root@RServer01 ~]# vi /etc/selinux/config
SELINUX=disabled
[root@master ~]# setenforce 0 #关闭SELinux及防火墙
 
注意:后端所有Real服务器节点都需要安装,用于模拟测试。
建议:为了测试方便,建议所有节点关闭防火墙和SELinux,若未关闭防火墙也可通过下列方式放通:
 firewall-cmd --permanent–-add-service=keepalived
firewall-cmd --reload
 

2.3 安装Keepalived

 [root@lvsmaster ~]# yum -y install gcc gcc-c++ make kernel-devel kernel-tools kernel-tools-libs kernel libnl libnl-devel libnfnetlink-devel openssl-devel wget openssh-clients	        #安装基础环境及依赖
[root@lvsmaster ~]# ln -s /usr/src/kernels/`uname -r` /usr/src/linux
[root@lvsmaster ~]# wget http://www.keepalived.org/software/keepalived-1.3.6.tar.gz
[root@lvsmaster ~]# tar -zxvf keepalived-1.3.6.tar.gz #编译安装Keepalived
[root@lvsmaster ~]# cd keepalived-1.3.6/
[root@lvsmaster keepalived-1.3.6]# ./configure --prefix=/usr/local/keepalived
[root@Master keepalived-1.3.9]# make && make install
 
注意:CentOS6.8安装高于1.3.6版本会出现未知错误。

2.4 添加启动相关服务

 [root@lvsmaster ~]# mkdir /etc/keepalived
[root@lvsmaster ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[root@lvsmaster ~]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@lvsmaster ~]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[root@lvsmaster ~]# vi /etc/init.d/keepalived #创建Keepalived启动脚本,如附件
#!/bin/sh
#
# keepalived High Availability monitor built upon LVS and VRRP
#
# chkconfig: - 86 14
# description: Robust keepalive facility to the Linux Virtual Server project \
# with multilayer TCP/IP stack checks. ### BEGIN INIT INFO
# Provides: keepalived
# Required-Start: $local_fs $network $named $syslog
# Required-Stop: $local_fs $network $named $syslog
# Should-Start: smtpdaemon httpd
# Should-Stop: smtpdaemon httpd
# Default-Start:
# Default-Stop: 0 1 2 3 4 5 6
# Short-Description: High Availability monitor built upon LVS and VRRP
# Description: Robust keepalive facility to the Linux Virtual Server
# project with multilayer TCP/IP stack checks.
### END INIT INFO # Source function library.
. /etc/rc.d/init.d/functions exec="/usr/sbin/keepalived"
prog="keepalived"
config="/etc/keepalived/keepalived.conf" [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog lockfile=/var/lock/subsys/keepalived start() {
[ -x $exec ] || exit 5
[ -e $config ] || exit 6
echo -n $"Starting $prog: "
daemon $exec $KEEPALIVED_OPTIONS
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
} stop() {
echo -n $"Stopping $prog: "
killproc $prog
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
} restart() {
stop
start
} reload() {
echo -n $"Reloading $prog: "
killproc $prog -1
retval=$?
echo
return $retval
} force_reload() {
restart
} rh_status() {
status $prog
} rh_status_q() {
rh_status &>/dev/null
} case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
exit 2
esac
exit $
[root@lvsmaster ~]# chmod u+x /etc/rc.d/init.d/keepalived
[root@lvsmaster ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
……
smtp_connect_timeout 30
router_id LVS_Master #表示运行Keepalived服务器的一个标识
} vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色
interface eth0 #指定HA监测网络的接口
virtual_router_id 51 #同一个vrrp实例使用唯一的标识,即同一个vrrp_instance下,Master和Backup必须是一致的
priority 100 #定义优先级,数值越大,优先级越高
advert_int 1 #设定Mater和Backup负载均衡器之间同步检查时间间隔
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.24.8.100 #设置虚拟IP地址
}
} virtual_server 172.24.8.100 80 {
delay_loop 6 #运行情况检查时间
lb_algo rr #设置负载均衡算法
lb_kind DR #设置LVS实现负载均衡的机制,有NAT/DR/TUN
persistence_timeout 50 #会话保持时间
protocol TCP #指定转发类型 real_server 172.24.8.12 80 {
weight 1 #服务节点的权值,数值越大,权值越高
TCP_CHECK {
connect_timeout 5 #表示无响应超时时间,单位是秒
nb_get_retry 3 #表示重试次数
delay_before_retry 3 #表示重试间隔
}
}
real_server 172.24.8.13 80 {
weight 1
TCP_CHECK {
connect_timeout 5
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@lvsmaster ~]# scp /etc/keepalived/keepalived.conf 172.24.8.11:/etc/keepalived/keepalived.conf
[root@lvsbackup ~]# vi /etc/keepalived/keepalived.conf
state BACKUP
priority 80
 
注意;备用Director Server上需要修改状态为BACKUP和priority优先级。

2.5 安装IPVS管理工具

 [root@lvsmaster ~]# yum -y install ipvsadm

2.6 配置Real Server节点

在LVS的DR和TUN模式下,用户访问请求到大Real Server后,Real Server的响应报文直接返回给用户,而不需经过Director Server。因此,需要在每个Real Server上配置虚拟VIP地址。
注意:回环接口绑定vip,且禁止arp请求等操作,可通过以下脚本实现:脚本可留言索要。
 [root@RServer01 ~]# vi /etc/init.d/lvsrs
[root@RServer01 ~]# chmod u+x /etc/init.d/lvsrs
 

2.7 启动集群

 [root@RServer01 ~]# service httpd start
[root@RServer01 ~]# chkconfig httpd on
[root@RServer02 ~]# service httpd start
[root@RServer02 ~]# chkconfig httpd on [root@lvsmaster ~]# service keepalived start
[root@lvsmaster ~]# chkconfig keepalived on
[root@lvsbackup ~]# service keepalived start
[root@lvsbackup ~]# chkconfig keepalived on [root@RServer01 ~]# service lvsrs start
[root@RServer02 ~]# service lvsrs start
 

三 测试集群

3.1 高可用功能测试

停止主Director Server服务器的Keepalived,观察/var/log/messages日志,可知备机会立刻变为MASTER,并且接管主机的虚拟ip资源。重启主Director Server服务器的Keepalived,备机会重新恢复为BACKUP角色。
具体测试略。

3.2 负载均衡测试

 [root@RServer01 ~]# echo 'This is Real Server01!' >>/var/www/html/index.html
[root@RServer01 ~]# echo 'This is Real Server02!' >>/var/www/html/index.html
 
然后浏览器访问:http://172.24.8.100,并不断的刷新,能分别看到Server01和Server02即可。

3.3 故障切换测试

 [root@RServer01 ~]# service httpd stop

当关掉其中一个Real Server时,访问VIP,只会显示还处于集群中的web节点。

003.Keepalived搭建LVS高可用集群的更多相关文章

  1. 基于keepalived搭建MySQL高可用集群

    MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和 ...

  2. 使用Keepalived构建LVS高可用集群

    LVS的DR模型配置+Keepalive部署 介绍 下图为DR模型的通信过程,图中的IP不要被扑结构中的IP迷惑,图里只是为了说明DR的通信原理,应用到本例中的拓扑上其工作原理不变. 拓扑结构 服务器 ...

  3. nginx+keepalived+consul 实现高可用集群

    继 负载均衡 之 nginx+consul+consul template,我这次将使用2台虚拟机,来做一个简单的双机负载均衡试验. 试验目标: 1. 当参加负载均衡的子节点服务,有任何其中一个或多个 ...

  4. 搭建 Kubernetes 高可用集群

    使用 3 台阿里云服务器(k8s-master0, k8s-master1, k8s-master2)作为 master 节点搭建高可用集群,负载均衡用的是阿里云 SLB ,需要注意的是由于阿里云负载 ...

  5. 阿里云搭建k8s高可用集群(1.17.3)

    首先准备5台centos7 ecs实例最低要求2c4G 开启SLB(私网) 这里我们采用堆叠拓扑的方式构建高可用集群,因为k8s 集群etcd采用了raft算法保证集群一致性,所以高可用必须保证至少3 ...

  6. LVS高可用集群

    高可用LVS 集群构建 在LVS集群当中Director的作用是很关键的,所以我们在生产环境中要保证其高可用. 高可用架构图: 1.通过 piranha搭建LVS高可用性集群 piranha是REDH ...

  7. 基于 ZooKeeper 搭建 Spark 高可用集群

    一.集群规划 二.前置条件 三.Spark集群搭建         3.1 下载解压         3.2 配置环境变量         3.3 集群配置         3.4 安装包分发 四.启 ...

  8. Spark学习之路(七)—— 基于ZooKeeper搭建Spark高可用集群

    一.集群规划 这里搭建一个3节点的Spark集群,其中三台主机上均部署Worker服务.同时为了保证高可用,除了在hadoop001上部署主Master服务外,还在hadoop002和hadoop00 ...

  9. Spark 系列(七)—— 基于 ZooKeeper 搭建 Spark 高可用集群

    一.集群规划 这里搭建一个 3 节点的 Spark 集群,其中三台主机上均部署 Worker 服务.同时为了保证高可用,除了在 hadoop001 上部署主 Master 服务外,还在 hadoop0 ...

随机推荐

  1. 设置 Confluence 6 外部索引站点

    Confluence 并不能比较容易的对外部站点进行搜索,这个是因为 Confluence 使用的是 Lucene 内部查找,但是你还是有下面 2 个可选的方案: 嵌入外部页面到 Confluence ...

  2. Confluence 6 重新获得站点备份文件

    Confluence 将会创建备份,同时压缩 XML 文件后存储熬你的 <home-directory>/backups> 目录中.你需要自己访问你安装的 Confluence 服务 ...

  3. 基于 Confluence 6 数据中心的 SAML 单点登录设置你的身份提供者

    如果你希望 Confluence 提供 SSO,将需要将 Confluence 添加到你的 IdP 中.一些后续的步骤将会与你的 IdP 有关,但是你通常需要: 在你的 IdP 中定义一个 'appl ...

  4. ios蓝牙详解

    最近这段时间在研究蓝牙,也研究了一段时间了现在在下面做个总结 1 其实蓝牙连接只要明白了整体原理,其实挺简单的  2 大部分情况下,手机作为中心管理者,而连接的设备被称为外设,外设的结构有点像一颗大树 ...

  5. python之线程同步

    lock与rlock 使用lock不能连续两次获取锁,获取锁必须先释放锁.但是在一个线程中调用另一个函数时,在该函数中要继续操作共享的数据,这时获取锁就相当于连续执行两次获取锁,所以lock就不适用该 ...

  6. javaScript遍历对象、数组总结

        javaScript遍历对象总结 1.使用Object.keys()遍历 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性). var obj = {'0':'a ...

  7. 论文阅读:Review of Visual Saliency Detection with Comprehensive Information

    这篇文章目前发表在arxiv,日期:20180309. 这是一篇针对多种综合性信息的视觉显著性检测的综述文章. 注:有些名词直接贴原文,是因为不翻译更容易理解.也不会逐字逐句都翻译,重要的肯定不会错过 ...

  8. JSTL 标准标签库 (JavaServer Pages Standard Tag library, JSTL)

    JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)是一个定制标签库的集合,用来解决 像遍历Map或集合.条件测试.XML处理,甚至数据 库访问和数 ...

  9. django----Form提交按钮

    form表单中要用submit,如果用button切记要加上type,不然button默认的type是submit,会有影响 <button class="login" ty ...

  10. mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,

      在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记 ...