前端httpd+keepalived加后端heartbeat+nfs+drbd实现httpd服务的高效应用及资源统一管理...
本文四台机器:Centos6.0
lv1、lv2两台机器做httpd的前端,使用keepalived做高可用;虚拟出一个vip供client访问。
node1、node2应用drbd技术实现文件镜像存储,虚拟出一个vip做nfsserver_ip供httpd服务,方便配置,资料的统一管理;
涉及应用技术;httpd、keepalived、drbd、nfs、heartbeat
如图:
lv1: 192.168.182.130
lv2: 192.168.182.129 VIP:192.168.182.200 该vip供client访问
node1:192.168.182.133
node2:192.168.182.134 VIP:192.168.182.150 该VIP充当nfsserver进行挂载
首先关闭了selinux、iptables;当然真实环境并非如此,我们进行分别配置即可
一、开始配置,lv1、lv2;进行测试前端是否正常
1、分别执行:yum install -y httpd ipvsadm keepalived
为了分别出lv1、lv2的页面区别,分别在页面标识lv1、lv2
2、接下来配置keepalived;
lv1:上配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
coffee_lanshan@sina.com
}
notification_email_from admin@example.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LV_ha
}
vrrp_instance httpd {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.182.200
}
}
virtual_server 192.168.182.200 80 {
delay_loop 2
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.182.130 80 {
weight 3
notify_down /var/www/httpd.sh
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
lv2:配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
coffee_lanshan@sina.com
}
notification_email_from admin@example.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LV_ha
}
vrrp_instance httpd {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.182.200
}
}
virtual_server 192.168.182.200 80 {
delay_loop 2
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.182.129 80 {
weight 3
notify_down /var/www/httpd.sh
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
分别在lv1、lv2创建httpd.sh
vim /var/www/httpd.sh
#!/bin/sh
pkill keepalived
#####
chmod +x httpd.sh
现在为此测试上面的是否正常,是否正常转移
发现现在是lv1在提供服务,在vrrp中也可以看到( priority 100);
现在在lv1停掉httpd
现在发现是lv2在提供服务,现在当你启动lv1上的httpd和keepalived的服务后,httpd会自动切换会lv1上;这里不演示了;
二:现在开始node1、node2配置drbd+heartbeat+nfs并进行测试;
1、配置hosts,安装drbd、heartbeat、nfs
1>、node1、node2:
vim hosts
192.168.182.133 node1
192.168.182.134 node2
2>、drbd安装
yum -y install gcc kernel-devel kernel-headers flex
wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz
tar zxvf drbd-8.4.3.tar.gz
cd drbd-8.4.3
./configure --prefix=/usr/local/drbd --with-km
make KDIR=/usr/src/kernels/2.6.32-71.el6.i686/
make install
mkdir -p /usr/local/drbd/var/run/drbd
cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d
chkconfig --add drbd
chkconfig drbd on
cd drbd
cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
depmod
modprobe drbd
确定加载了drbd模块
到此两台机器的drbd安装完毕;开始config
首先需要在node1、node2;fdisk新增的disk(这里我新增了一个8G的disk来做drbd),切记不可格式化
node1:
cd /usr/local/drbd/etc/drbd.d
mv global_common.conf global_common.conf.bak
vim global_common.conf
global {
usage-count yes; #是否参加DRBD使用者统计,默认yes
}
common {
net {
protocol C; #使用drbd的第三种同步协议,表示收到远程主机的写入确认后,则认为写入完成.
}
}
vim r0.res
resource r0 {
on node1 { #每个主机的说明以on开头,后面是hostname
device /dev/drbd1; #drbd设备名
disk /dev/sdb1; #/dev/drbd1使用的磁盘分区是/dev/sdb1。
address 192.168.182.133:7789; #设置DRBD的监听端口,用于与另一台主机通信。
meta-disk internal;
}
on node2 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.182.134:7789;
meta-disk internal;
}
}
将上面这个配置文件分别复制到两台主机的/etc/drbd.d目录下。
2、 启动DRBD
在两个节点执行
在启动DRBD之前,你需要分别在两台主机的sdb1分区上,创建供DRBD记录信息的数据块.分别在两台主机上执行:
[root@Centos ~]# drbdadm create-md r0 或者执行drbdadm create-md all
[root@Centos ~]# drbdadm create-md r0
在两个节点启动服务
[root@Centos ~]#/etc/init.d/drbd start
[root@Centos ~]#/etc/init.d/drbd start
最好同时启动
在任意节点查看节点状态
对输出的含义解释如下:
ro表示角色信息,第一次启动drbd时,两个drbd节点默认都处于Secondary状态,
ds是磁盘状态信息,“Inconsistent/Inconsisten”,即为“不一致/不一致”状态,表示两个节点的磁盘数据处于不一致状态。“UpToDate/UpToDate”。即为“实时/实时”状态了。
Ns表示网络发送的数据包信息。
Dw是磁盘写信息
Dr是磁盘读信息
设置主节点
由于默认没有主次节点之分,因而需要设置两个主机的主次节点,选择需要设置为主节点的主机,然后执行如下命令:
drbdsetup /dev/drbd1 primary --o
第一次执行完此命令后,在后面如果需要设置哪个是主节点时,就可以使用另外一个命令:
drbdadm primary r0或者drbdadm primary all
执行此命令后,开始同步两台机器对应磁盘的数据
从输出可知:
“ro状态现在变为“Primary/Secondary”,“ds”状态也变为“UpToDate/Inconsistent”,也就是“实时/不一致”状态,现在数据正在主备两个主机的磁盘间进行同步,且同步进度为8.4%,同步速度每秒10M左右。
等待片刻,再次查看同步状态,输出如下:
可以看到同步完成了,并且“ds“状态也变为“UpToDate/UpToDate”了。即为“实时/实时”状态了。
格式化disk
mkfs.ext4 /dev/drbd1
接下了就可以mount 使用了
3、安装heartbeat、nfs
yum install heartbeat nfs libnet -y
cp /usr/share/doc/heartbeat-3.0.4/authkeys ha.cf haresources /etc/ha.d/
1、node1配置ha.cf
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
ucast eth0 192.168.182.134
auto_failback off
node node1
node node2
ping 192.168.182.2
respawn root /usr/lib/heartbeat/ipfail
++++++++++++++++++++++++++++++++
node2的ha.cf和上面一样,只是ucast eth0 192.168.182.133(对方IP)
配置/etc/ha.d/authkeys
auth 2
#1 crc
2 sha1 heartbeat
#3 md5 Hello!
node2同上
配置/etc/ha.d/haresources
node1 IPaddr::192.168.182.150/24/eth0 drbddisk::r0 Filesystem::/dev/drbd1::/mnt::ext4 nfs
node2同上
chmod 600 authkeys
node2同上
cp /usr/local/drbd/etc/ha.d/resource.d/drbddisk /etc/ha.d/resource.d/
node2同上
启动heartbeat
/etc/init.d/heartbeat start
现在为止:你会发现node1上网卡
将node1上heartbeat关闭:你会发现node2
自动挂载,drbd状态自动切换,vip自动漂移全部正常
分别在node1、node2上配置nfs共享目录
[root@node2 ~]# vim /etc/exports
/root/data *(rw)
[root@node2 ~]# exportfs -r
[root@node2 ~]# exportfs -u
/root/data <world>
4、接下来怎么在前面的两台lv上面挂载充当httpd服务的主目录;
lv1、lv2:
mount -t nfs 192.168.182.150:/root/data /var/www/html
可以把这个写到fstab中,开机启动
192.168.182.150:/root/data /var/www/html nfs defaults 0 0
5、接下来进行测试了:
1>、我们在node1中的/root/data/ 中创建index.html;期中内容:node+heartbeat+test
2>、现在我们将lv1宕机掉进行测试也是一样的,不影响
3>、现在我们将node1宕掉,node间的服务会切换到node2,然后修改index.html的内容进行分别
这里新增了two一个标识
node1:/etc/init.d/heartbeat stop
node2:
[root@node2 data]# vim index.html
node+heartbeat+test two
现在再访问vip
一切正常!ok
这样方便统一管理了资源,并且实现了可靠性;
本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1208485
前端httpd+keepalived加后端heartbeat+nfs+drbd实现httpd服务的高效应用及资源统一管理...相关推荐
- V 8 nfs+drbd+heartbeat
V 8 nfs+drbd+heartbeat nfs+drbd+heartbeat,nfs或分布式存储mfs只要有单点都可用此方案解决 在企业实际生产场景中,nfs是中小企业最常用的存储架构解决方案之 ...
- Centos6.3下DRBD+HeartBeat+NFS配置笔记
--------------闲 扯------------------ 这里首先感谢酒哥的构建高可用的Linux服务器的这本书,看了这本书上并参考里面的配置让自己对DRBD+HeartBeat+N ...
- 红帽企业集群和存储管理之DRBD+Heartbeat+NFS实现详解
红帽企业集群和存储管理之 DRBD+Heartbeat+NFS实现详解 案例应用背景 本实验部署DRBD + HEARDBEAT + NFS 环境,建立一个高可用(HA)的文件服务器集群.在方案中,通 ...
- Centos5.6 x86_64下安装DRBD+Heartbeat+NFS
Centos5.6 x86_64下安装DRBD+Heartbeat+NFS 2012-08-29 10:49:01 转载http://andrewyu.blog.51cto.com/1604432/9 ...
- DRBD+HeartBeat+NFS 架构
昨天做了单独的DRBD,还存在一些疑问,今天通过这个DRBD+HeartBeat+NFS架构,并可以清楚的解答昨天的疑问了.实际上,DRBD只是作为磁盘冗余,而并不是像我之前理解的那样,同时提供2份一 ...
- 虚拟同步机离网模型,30KW PCS储能逆变器 离网 并网功能 前端BUCK-BOOST电路,后端三电平逆变器,下垂控制加虚拟同步机控制
虚拟同步机离网模型,30KW PCS储能逆变器. 离网 并网功能. 前端BUCK-BOOST电路,后端三电平逆变器,下垂控制加虚拟同步机控制,可进行多台PCS并联,手工代码C,S-function. ...
- lvs(+keepalived)、haproxy(+heartbeat)、nginx 负载均衡的比较分析
目前使用比较多的就是标题中提到的这两者,其实lvs和haproxy都是实现的负载均衡的作用,keepalived和heartbeat都是提高高可用性的,避免单点故障.那么他们为什么这么搭配,而又有什么 ...
- ceonts6.8 nginx做前端代理apache做后端服务架构配置
Apache 和 Nginx 说是当今最流行的两个 Web 服务器一点也不为过,Apache 用户基数大,稳定,兼容性高(比如jsp/php/cgi/python等等),但与 Ngnix 相比,Apa ...
- 前端和后端开发人员比例_前端开发人员vs后端开发人员–实践中的定义和含义
前端和后端开发人员比例 Websites and applications are complex! Buttons and images are just the tip of the iceber ...
最新文章
- 下列哪个不是目前python里的内置模块-python中那些小众但有用的内置模块
- Swift之高德地图自定义标注弹出气泡样式
- NLP之TEA:自然语言处理之文本情感分析的简介、算法、应用、实现流程方法、案例应用之详细攻略
- java面试题三 位运算符
- .net framework摘抄与理解
- (AU/PS)Adobe Audition CC.exe -系统错误 由于找不到MSVCP120.dll,无法继续执行代码。重新安装程序可能会解决此问题。
- CCF CSP 201604-1 折点计数
- wps直接打开CVS文件会把长串数字订单号最后4位变为0
- DeepMind论文三连发:如何在仿真环境中生成灵活行为
- 2021年下半年软考数据库系统工程师真题答案解析
- 【MicroPython ESP32】ssd1306 0.96“OLED+网络时钟
- Linux下为Calibre书库打中文目录名与文件名补丁
- Computer Networking——network layer QA
- .Net 调用中国气象台Web Service
- 内存测试软件 ddr4,DDR4内存测试软件
- 从华为辞职门 看IT人如何度过下半生(转载)
- 最多只需三步,彻底解决VB6中不能加载MSCOMCTL.OCX的提示
- puzzle(0112)不规则数独、变种数独
- ## 看看sass和less会遇到的问题吧
- linux命令详解:tc
热门文章
- Fedora-19安装texlive2013并配置中文
- 蓝桥杯第八届省赛JAVA真题----包子凑数
- java sort排序
- java 取Blob转为String
- mycat 分表子查询_还不懂MyCat?一文带你深入剖析,实现MySQL读写分离
- c语言保存后怎么打开文件,保存打开文件之后,怎么也不能在显示函数中出来。。...
- python搭建webapi_怎么搭建Web Api
- java f.lenth返回值,这个是什么意思,求仔细说明
- putty远程登录linux有啥用,putty 自动远程登录linux
- PHP服务Fcgi进程及PHP解析优化