文档章节

集群HA piranha keepalived haproxy

Berry涩味
 Berry涩味
发布于 2014/06/05 13:07
字数 2915
阅读 125
收藏 1

HA+LB图形界面管理

以  Piranha Configuration Tool 配 置  Load Balancer 外挂程式

环境:rhel6.5

两个HA主机:192.168.2.228  node1.example.com   192.168.2.246  node2.example.com

两个LVS主机:192.168.2.226 node3.example.com   192.168.2.15  vm1.example.com





HA192.168.2.228主机上:

yum install -y piranha piranha配置工具

piranha-passwd 设置密码

/etc/init.d/piranha-gui start

netstat -antlp 端口是3636

piranha-gui服务,唯有在主节点上

/etc/sysconfig/ha/lvs.cf 配置文件,图形界面里设置好后,会自动同步到文件里

另一HA192.168.2.246上:

yum install -y piranha

网页访问192.168.2.2283636

登录用户piranha,密码为自己设置的密码


global setting:(主)



REDUNDENCY:(备)

注意端口不要跟别人冲突。


VIRTUAL SERVERS:(虚拟服务)


virtual server

添加虚拟IP地址,选择RR轮转算法。




real server:(添加两台要访问的主机ip

激活所有节点。


图形界面里设置好后,会自动同步到文件/etc/sysconfig/ha/lvs.cf里,若要微调,可以直接修改文件。修改文件后需重启服务。


在两个LVS主机上都执行以下操作:

yum install -y arptables_jf httpd

绑定虚拟IP,在所有真实伺服器上配置虚拟IP位址,建立IP别名。:

ifconfig eth0:0 192.168.2.148 netmask 255.255.255.255


arptables -A IN -d 192.168.2.148 -j DROP

arptables -A OUT -s 192.168.2.148 -j mangle --mangle-ip-s 192.168.2.15226主机也是)

#arptables -A OUT -s <virtual_ip> -j mangle --mangle-ip-s <real_ip>

这会导致真实伺服器忽略所有针对虚拟ip位址的arp请求,并改变任何向外arp回应,把原先包含虚拟IPARP回应改为包含真实伺服器的IP。唯一应该要回应任何VIPARP请求的节点,为目前启用的LVS节点。


/etc/init.d/arptables_jf save

/etc/init.d/arptables_jf start

chkconfig arptables_jf on

/etc/init.d/httpd start #需开启两个real serverhttpd

echo `hostname` > index.html #http写测试文件


两台HA主机etc/init.d/pulse start

网页测试:192.168.2.148

1.若两个HA主机228(主)和246的后台服务pulse全部开启,15226主机的httpd都开启,刷新页面会轮循出现15226的主机名。

15httpd关掉,刷新页面只会出现226主机名。

主节点ipvsadm -L查看

2.228主节点/etc/init.d/pulse stop,则由备节点246接管,228复活之后不会回切。



ifconfig查看


HA节点会显示STARTING PULSE AS BACKUP.



KeepAlived+LVS

环境:rhel6.5

两个HA主机:192.168.2.228  node1.example.com   192.168.2.246  node2.example.com

两个LVS主机:192.168.2.226 node3.example.com   192.168.2.15  vm1.example.com

HA228 node1

下载包keepalived-1.2.12.tar.gz

tar zxf  keepalived-1.2.12.tar.gz

cd keepalived-1.2.12


./configure –prefix=/usr/local/keepalived #源码编译,yum install -y make gcc

安装包依赖性:yum install -y openssl-devel  libnl-devel  

make && make install  编译并安装,成功后生成/usr/local/keepalived/目录

cd /usr/local/keepalived/etc

因为只读/etc/keepalived/keepalived.conf文件,所以需建立软链接

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived   /etc/rc.d/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived   /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived/   /etc/

ln -s /usr/local/keepalived/sbin/keepalived   /sbin

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived


global_defs {

notification_email {

root@localhost #接收警报的 email地址,可以添加多个

}

notification_email_fromkeepalived@node1.example.com #设置邮件的发送地址

smtp_server 127.0.0.1 #设置 smtp server 地址

smtp_connect_timeout 30 #设置连接smtp 服务器超时时间

router_id LVS_DEVEL #load balancer 的标识 ID,用于email 警报

}


vrrp_instance VI_1 {

state MASTER #备机改为 BACKUP,此状态是由priority 的值来决定的,当前

priority的值小于备机的值,那么将会失去MASTER 状态

interface eth0 #HA 监测网络接口

virtual_router_id 133 #主、备机的virtual_router_id 必须相同,取值0-255

priority 100 #主机的优先级,备份机改为50,主机优先级一定要大于备机

advert_int 1 #主备之间的通告间隔秒数

authentication { #主备切换时的验证

auth_type PASS #设置验证类型,主要有PASS AH两种

auth_pass 1111 #设置验证密码,在一个vrrp_instance ,MASTERBACKUP

须使用相同的密码才能正常通信

}

virtual_ipaddress { #设置虚拟IP 地址,可以设置多个虚拟IP 地址,每行一个

192.168.2.148

}

}


virtual_server 192.168.2.148 80 { #定义虚拟服务器

delay_loop 6 #每隔 6 秒查询realserver 状态

lb_algo rr #lvs 调度算法,这里使用轮叫

lb_kind DR #LVS 是用 DR 模式

#persistence_timeout 50 #会话保持时间,单位是秒,这个选项对于动态网页是非常有

用的,为集群系统中session共享提供了一个很好的解决方案。有了这个会话保持功能,用户的

请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保

持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在50 秒内没有执行任

何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受50

的时间限制。

protocol TCP #指定转发协议类型,tcp udp两种


real_server 192.168.2.226 80 { #配置服务节点

weight 1 #配置服务节点的权值,权值大小用数字表示,数字越大,

值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设

置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统

资源

TCP_CHECK { #realserve 的状态检测设置部分,单位是秒

connect_timeout 3 #10 秒无响应超时

nb_get_retry 3 #重试次数

delay_before_retry 3 #重试间隔

}

}


real_server 192.168.2.15 80 {

weight 1

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}


}


/etc/init.d/keepalived  start


scp -r /usr/local/keepalived/   node2.example.com:/usr/local/ #直接发送给node2node2就不用编译安装里。


node2上:

建立软链接

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived   /etc/rc.d/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived   /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived/   /etc/

ln -s /usr/local/keepalived/sbin/keepalived   /sbin


vim /etc/keepalived/keepalived.conf

:备机的keepalived 配置文件只改动红色字体部分!


测试:

1.高可用测试:停止master 上的 keepalived服务,backup是否接管。与piranha不同的是master主机的keepalived服务挂掉,交给BACKUP接管,当master恢复后,会切回到master

2.负载均衡测试:访问http://192.168.2.148,看到页面在两个realserver 上切换表示成功!

你也可以通过ipvsadm -L查看详细连接情况!

3.故障切换测试:任意关闭realserver 上的 httpd服务,Keepalived监控模块是否能及时发现,

然后屏蔽故障节点,同时将服务转移到正常节点来执行,故障会发送邮件。


Haproxy ,http模式,与LVS不一样,是代理。

环境:rhel6.5

HAproxy主机:192.168.2.228  node1.example.com

两个real server主机:192.168.2.226 node3.example.com   192.168.2.15  vm1.example.com

nginxhaproxy适合做网站调度的负载均衡,lvs适合做应用层数据库的负载均衡。


HAProxy提供高可用性、负载均衡以及基于TCP HTTP应用的代理,支持虚拟主机,

它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的 web

,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可

以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整 合进您当前

的架构中,同时可以保护你的 web服务器不被暴露到网络上。好处:在real server上不需要做任何设置,只需开启httpd即可。

Haproxynode1上:

下载包haproxy-1.4.24.tar.gz

rpm包方式安装:

yum install -y rpm-build

rpmbuild -tb haproxy-1.4.24.tar.gz #tar包转换成二进制文件

软件包依赖性:yum install -y pcre-devel

rpm -ivh rpmbuild/RPMS/x86_64/haproxy-1.4.24-1.x86_64.rpm #安装rpm

mkdir /usr/share/haproxy

vim /etc/haproxy/haproxy.cfg

global

log 127.0.0.1   local0 #指定日志设备

log 127.0.0.1   local1 notice #指定日志类型,还有err warning debug

#log loghost    local0 info

maxconn 4096 #并发最大连接数量

chroot /usr/share/haproxy #家目录,锁在这个目录,不会牵扯其他目录

uid 99 #用户

gid 99 #

daemon #后台运行

#debug

#quiet

defaults

log    global

mode   http #默认使用 http7层模式 tcp: 4
option httplog #http
日志格式

option dontlognull #禁用空链接日志

retries 3 #重试 3次失败认为服务器不可用

option  redispatch #client连接到挂掉的机器时,重新分配到健康的主机

maxconn 2000

contimeout     5000 #连接超时

clitimeout     50000 #客户端超时

srvtimeout     50000 #服务器端超时

stats uri /status #haproxy 监控页面

listen www.example.com *:80 #监听的实例名称(真机做解析),地址和端口

balance roundrobin #负载均衡算法

server web1 192.168.2.226:80 cookie app1inst1 check inter 2000 rise 2 fall 3

server web2 192.168.2.149:80 cookie app1inst2 check inter 2000 rise 2 fall 3

#cookie app1inst1:表示 serveridapp1inst1

#check inter 2000:检测心跳频率

#rise 2:表示 2次正确认为服务器可用

#fall 5:表示 5次失败认为服务器不可用


/etc/init.d/haproxy start(保证httpd关闭,因为haproxy也监听80端口,会冲突)


访问192.168.2.228(HAnode1主机,即做Haproxy代理的主机),访问http://www.example.com测试负载 ,访问 haproxy监控页面:http://192.168.0.228/status

监控页面的认证


vim /etc/haproxy/haproxy.cfg



global

log 127.0.0.1   local0 #指定日志设备

#log 127.0.0.1   local1 notice #屏蔽local1

log 127.0.0.1    local0 info #指定日志类型,还有err warning debug

maxconn 4096 #并发最大连接数量

chroot /usr/share/haproxy #家目录,锁在这个目录,不会牵扯其他目录

uid 99 #用户

gid 99 #

daemon #后台运行

#debug

#quiet

defaults

log    global

mode   http #默认使用 http7层模式 tcp: 4
option httplog #http
日志格式

option dontlognull #禁用空链接日志

retries 3 #重试 3次失败认为服务器不可用

option  redispatch #client连接到挂掉的机器时,重新分配到健康的主机

maxconn 2000

contimeout     5000 #连接超时

clitimeout     50000 #客户端超时

srvtimeout     50000 #服务器端超时

listen status *:8080 监听端口8080

      stats enable

      stats uri /status #监控页面地址

      stats auth admin:123456 #管理帐号和密码

      stats refresh 5s #刷新频率

/etc/init.d/haproxy restart

haproxy日志:

vi /etc/rsyslog.conf #接受 haproxy日志

$ModLoad imudp

$UDPServerRun 514

#### RULES #### #定义规则,日志地址

local0.* /var/log/haproxy.log

/etc/init.d/rsyslog restart


网页访问192.168.2.2288080/status

输入验证用户名和密码



Haproxy +  Keeplived整合

MASTER

vim keepalived.conf

! Configuration File for keepalived


vrrp_script check_haproxy { #大括号前注意空格,否则不调用脚本

      script "/etc/keepalived/check_haproxy"

      interval 2

      weight   2

}


global_defs {

 notification_email {

      root@localhost

 }

 notification_email_from keepalived@node1.example.com

 smtp_server 127.0.0.1

 smtp_connect_timeout 30

 router_id LVS_DEVEL

}


vrrp_instance VI_1 {

  state MASTER

  interface eth0

  virtual_router_id 133

 priority 100

  advert_int 1

  authentication {

      auth_type PASS

      auth_pass 1111

  }

  virtual_ipaddress {

      192.168.2.148

  }

  track_script {

      check_haproxy

  }

}


BACKUP

vim keepalived.conf

! Configuration File for keepalived


vrrp_script check_haproxy { #大括号前注意空格,否则不调用脚本

      script "/etc/keepalived/check_haproxy"

      interval 2

      weight   2

}


global_defs {

 notification_email {

      root@localhost

 }

 notification_email_from keepalived@node2.example.com

 smtp_server 127.0.0.1

 smtp_connect_timeout 30

 router_id LVS_DEVEL

}


vrrp_instance VI_1 {

  stateBACKUP #区分master

  interface eth0

  virtual_router_id 133

 priority 50

  advert_int 1

  authentication {

      auth_type PASS

      auth_pass 1111

  }

  virtual_ipaddress {

      192.168.2.148

  }

  track_script { #注意大括号前面的空格

      check_haproxy

  }

}


创建脚本vim /etc/keepalived/check_haproxy

#!/bin/bash

/etc/init.d/haproxy status &>/dev/null  ||   /etc/init.d/haproxy restart &>/dev/null #检测haproxy状态不显示,要是状态不对,就重启服务。

if [ $? -ne 0 ];then #要是重启状态不成功,就关闭keepalived服务,切换到备机。

/etc/init.d/keepalived stop &>/dev/null

fi


chmod +x  /etc/keepalived/check_haproxy

scp check_haproxy  192.168.2.242:/etc/keepalived/

scp /etc/haproxy/haproxy.cfg  192.168.2.242:/etc/haproxy/

scp haproxy-1.4.24-1.x86_64.rpm  192.168.2.242:/root/ #haproxy发到backup

scp /etc/rsyslog.conf 192.168.2.242:/etc/


/etc/init.d/httpd stop

/etc/init.d/haproxy  stop

/etc/init.d/keepalived start


backup242):

rpm -ivh haproxy-1.4.24-1.x86_64.rpm

/etc/init.d/rsyslog restart

/etc/init.d/httpd stop

/etc/init.d/haproxy  stop

/etc/init.d/keepalived start

网页访问虚拟IP,主机备机keepalived一开启,haproxy就自动开启,主机挂掉,备机接管;主机恢复了,备机会把虚拟IP地址发给主机,主机继续接管。接管的机子上ip addr show查看具体情况。



© 著作权归作者所有

共有 人打赏支持
Berry涩味
粉丝 8
博文 7
码字总数 14335
作品 0
西安
系统管理员
私信 提问
基于keepalived的Haproxy高可用配置

一、概述: HAProxy是一个用于4层或7层的高性能负载均衡软件,在大型网站的大型Web服务器群集中,HAProxy可用来替代专业的硬件负载均衡设备,节省大量的开支。 通常情况下,为了避免整个体系...

OutManLinux
07/01
0
0
部署k8s ssl集群实践6:配置高可用kube-apiserver组件ha+keepalived

参考文档: https://github.com/opsnull/follow-me-install-kubernetes-cluster 感谢作者的无私分享。 集群环境已搭建成功跑起来。 文章是部署过程中遇到的错误和详细操作步骤记录。如有需要对...

am2012
08/27
0
0
keepalived+haproxy构建高可用负载均衡集群

Keepalived+haproxy构建web高可用负载均衡系统 本章将使用keepalived做为高可用集群调度用户请求,并且检测haproxy负载均衡器的状态,实时地完成节点的动态调整。 keepalived原理图: Layer3:...

Andy-xu
2014/05/14
0
2
搭建mysql负载均衡及高可用环境

目标:使用两台主机实现 Mysql 的负载均衡及冗余,并做到双主互备; 环境:rhel5.8,mysql-5.0.77,keepalived-1.2.7,haproxy-1.4.20; 说明: keepalived 实现通过 vrrp协议,通过使一个虚拟I...

好雨知时节
2013/10/23
0
25
高可用haproxy调度后端服务器实现动静分离集群架构

项目要求: (1) 动静分离部署wordpress,动静都要能实现负载均衡,要注意会话的问题; (2) 设计拓扑; (3) haproxy的设计要求: (a) stats page,要求仅能通过本地访问使用管理接口; (b) 动...

狐狸和鳄鱼
07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
32分钟前
0
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
1
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
1
0
大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
今天
4
0
hadoop垃圾回收站

在生产生,hdfs回收站必须是开启的,一般设置为7天。 fs.trash.interval 为垃圾回收站保留时间,如果为0则禁用回收站功能。 fs.trash.checkpoint.interval 回收站检查点时间,一般设置为小于...

hnairdb
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部