HA-web-services实验

简介:

一、HA部署

 本次实验的程序选型为heartbeat v1 + hearesources。资源有IP和httpd,filesystem

    配置HA集群的前提:

        (1)各节点资源一致,硬件或软件环境一致

        (2)各节点时间保持一致,便于心跳传递,使用ntp协议实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#使用ntpdate命令同步时间,并建立周期性任务
#可使用任意节点服务器作为ntp时间服务器,如各节点可上公网,可直接指定公网ntp服务器
 
1、安装ntp
[root@jymlinux ~] # yum install -y ntp
[root@jymlinux ~] # vim /etc/ntp.conf           #修改配置文件允许本网段客户端获取地址
将下面的语句
restrict default kod nomodify notrap nopeer noquery
修改为
restrict default nomodify 
restrict 192.168.0.0 mask 255.255.255.0 nomodify
 
[root@jymlinux ~] # service ntpd start
Starting ntpd:                                             [  OK  ]
 
查看同步过程
[root@jymlinux ~] # ntpq -p
      remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*202.118.1.81    202.118.1.47     2 u   30   64    1   92.249    8.602   0.714
  202.112.31.197  .INIT.          16 u    -   64    0    0.000    0.000   0.000
 
2、客户端创建周期任务,每3秒同步时间
[root@centfils ~] # crontab -e
* /3  * * * *  /usr/sbin/ntpdate  192.168.0.16 &>  /dev/null
[root@centfils ~] # service crond start
 
 
#手动同步成功,因ntp一般为自动,手动前kill掉所有ntp进程即可
[root@centfils ~] # ntpdate 192.168.0.16
14 Nov 20:26:09 ntpdate[3786]: adjust  time  server 192.168.0.16 offset -0.004440 sec
 
3、时间同步
[root@jymlinux ~] # date; ssh 192.168.0.15 'date'
Mon Nov 14 20:36:17 CST 2016
root@192.168.0.15's password: 
Mon Nov 14 20:36:20 CST 2016

        (3)节点间需要通过主机名互相通信,必须解析主机至IP地址

            (a)建议名称解析功能使用hosts文件来实现

            (b)通信中使用的名字与节点名字必须保持一致 “uname -n” 或hostname展示出的名字保持一致

1
2
3
[root@jymlinux ~] # vim /etc/hosts
192.168.0.15   centfils
192.168.0.16   jymlinux

        (4)关于仲裁设备(共享硬盘或网关),如有偶数个节点,比如2个,应启用仲裁设备,奇数无需启用,大偶数也可以无需仲裁设备

        (5)配置各节点之间的root用户能够给予密钥认证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
1、生成密钥对
[root@centfils ~] # ssh-keygen -t rsa
Generating public /private  rsa key pair.
Enter  file  in  which  to save the key ( /root/ . ssh /id_rsa ): 
Enter passphrase (empty  for  no passphrase): 
Enter same passphrase again: 
Your identification has been saved  in  /root/ . ssh /id_rsa .
Your public key has been saved  in  /root/ . ssh /id_rsa .pub.
The key fingerprint is:
a8:ad:2c:23:83:60:ff:36:73:9d:09:24:37:ae:da:c9 root@centfils
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|     . =         |
|      * S        |
|..   o o         |
|+ . . o o o      |
|+ ooo*.. +       |
| o +*E+          |
+-----------------+
 
2、把公钥传输至远程服务器对应用户的家目录
[root@centfils ~] # ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.16
The authenticity of host  '192.168.0.16 (192.168.0.16)'  can't be established.
RSA key fingerprint is e5:84:6c:f7:c0:60:3d:0b:39:b6:1e:12:0d:48:8b:07.
Are you sure you want to  continue  connecting ( yes /no )?  yes
Warning: Permanently added  '192.168.0.16'  (RSA) to the list of known hosts.
root@192.168.0.16's password: 
Now try logging into the machine, with  "ssh 'root@192.168.0.16'" , and check  in :
 
   . ssh /authorized_keys
 
to  make  sure we haven 't added extra keys that you weren' t expecting.
 
3、测试
[root@jymlinux ~] # date; ssh root@192.168.0.15 'date'
Mon Nov 14 21:02:30 CST 2016
Mon Nov 14 21:02:30 CST 2016

        (6)定义为集群的资源不能开机自启,而是由crm管理

    配置列表:

        node1:192.168.0.15

        node2:192.168.0.16

        fip:192.168.0.17

        

二、安装heartbeat

  因为heartbeat,红帽和centos官方不提供rpm,因此先下载并安装epel包

1
2
3
4
5
6
7
[root@centfils ~] # wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
[root@centfils ~] # rpm -ivh epel-release-6-8.noarch.rpm 
[root@centfils heartbeat2] # yum install heartbeat-2.1.4-12.el6.i686.rpm heartbeat-pils-2.1.4-12.el6.i686.rpm heartbeat-stonith-2.1.4-12.el6.i686.rpm 
 
#安装依赖包,安装在主程序包前
[root@jymlinux ~] # yum install perl-TimeDate net-snmp-libs libnet PyXML
[root@jymlinux  ~] #  yum install libpils*

 

   heartbeat的配置文件在/etc/ha.d目录下,其主要配置文件为ha.cf,定义各节点上的heartbeat HA集群的基本属性。authkeys配置文件,为集群内节点间彼此传递消息时使用的加密算法及密钥。

haresources,为heartbeat v1提供的资源管理器配置接口,v1版专用。

 

1
2
#将配置文件模板复制到/etc/ha.d目录下
[root@centfils ha.d] # cp /usr/share/doc/heartbeat-3.0.4/{ha.cf,haresources,authkeys} /etc/ha.d/
1
2
#节点间认证配置文件权限必须为600
[root@centfils ha.d] # chmod 600 authkeys


三、配置heartbeat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
1、配置authkeys文件,指明启用何种算法,使用何种密钥,本文件须更改权限为400
auth 2
#1 crc
2 sha1 dPCDBSAie31fz6d5MhM0 /A
#3 md5 Hello!
 
生成随机字符串作为密钥
[root@centfils ha.d] # openssl rand -base64 16
dPCDBSAie31fz6d5MhM0 /A ==
 
 
2、配置ha.cf文件,定义高可用集群的基本工作方式
 
定义日志文件位置(二选一) logfacility为将日志交由syslog管理     
logfile         /var/log/ha-log
#logfacility     local0
多长时间发送一次心跳信息,默认为2秒
#keepalive 2
多长时间宣布某节点死亡,默认30秒
#deadtime 30
多长时间警告对方心跳信息延迟了,默认10秒
#warntime 10
第一次死去时间,避免因网络问题导致宣布死亡
#initdead 120
使用udp694端口传递心跳,并选择哪种方式传递心跳
#udpport        694
串行线缆传递心跳
#serial /dev/ttyS0      # Linux
#serial /dev/cuaa0      # FreeBSD
#serial /dev/cuad0      # FreeBSD 6.x
#serial /dev/cua/a      # Solaris
串行线缆的工作频率
#baud   19200
广播传递心跳
#bcast  eth0            # Linux
#bcast  eth1 eth2       # Linux
#bcast  le0             # Solaris
#bcast  le1 le2         # Solaris
多播传递心跳,网卡必须支持多播, ifconfig  grep  MULTICAST
mcast eth0 225.0.0.1 694 1 0           #端口694,TTL为1,不允许回传为0
#启用网卡支持多播
[root@jymlinux ~] # ip link set eth0 multicast on
 
单薄传递心跳
#ucast eth0 192.168.1.2
自动故障转回
auto_failback on
指明节点
#node   ken3
#node   kathy
node    centfils
node    jymlinux
指明网关为 ping  node设备(仲裁设备)
#ping 10.10.10.254
ping  192.168.0.1
指明一个组为 ping  node设备(仲裁设备)
#ping_group group1 10.10.10.254 10.10.10.253
指明节点间传送的压缩算法
compression     bz2
指明节点间传送数据压缩的最小数据为2KB
compression_threshold 2
1
2
3
3、配置haresources文件,定义集群资源
直接加入资源
centfils         192.168.0.17 /24/eth0/192 .168.0.255 httpd
1
2
4、将httpd设置为开机不启动
[root@centfils ~] # chkconfig httpd off
1
2
5、启动服务
[root@centfils ~] # service heartbeat start


四、测试

 启动服务后,浏览器输入fip192.168.0.17访问,down掉192.168.0.15,后出现

wKiom1gp19-gRZZZAAAh4NCiUr0228.png


测试成功


五、HA web services中加入共享文件资源

  

   filesystem为192.168.0.20,一般情况下HA-web services使用的filesystem为raid或分布式文件系统,实验以nfs演示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
1、在filesystem上建立共享文件系统
[root@linus ~] # clear
[root@linus ~] # mkdir /web/htdocs -pv
mkdir : created directory ` /web '
mkdir : created directory ` /web/htdocs '
[root@linus ~] # vim /web/htdocs/index.html
 
2、将此目录通过nfs共享
[root@linus ~] # yum install portmap*
#nfs-utils-* :包括基本的NFS命令与监控程序
 
[root@linus ~] # yum install nfs*
#portmap-* :支持安全NFS RPC服务的连接
 
[root@linus ~] # vim /etc/exports  
/web/htdocs      192.168.0.0 /24 (rw,no_root_squash)
#NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。
 
#在此处出现错误,nfs无法启动,提示为rpc无法连接,所以重启rpc后启动nfs
[root@linus ~] # /etc/init.d/rpcbind restart
Stopping rpcbind:                                          [FAILED]
Starting rpcbind:                                          [  OK  ]
[root@linus ~] #  service nfslock start
Starting NFS statd:                                        [  OK  ]
[root@linus ~] # service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
 
#将nfs加入开机自启
[root@linus ~] # chkconfig nfs on
 
#将nfs挂载进行测试,
[root@centfils ~] # mount -t nfs 192.168.0.20:/web/htdocs /var/www/html
[root@centfils ~] # umount /var/www/html

wKiom1grLSWwGmMuAAAjIL9L9sQ390.png

1
2
3
4
5
6
[root@jymlinux ha.d] # vim haresources 
centfils         192.168.0.17 /24/eth0/192 .168.0.255 Filesystem::192.168.0.20: /web/htdocs :: /var/www/html ::nfs httpd
[root@jymlinux ha.d] # scp haresources centfils:/etc/ha.d/
haresources                                         100% 6018     5.9KB /s    00:00   
 
[root@jymlinux ha.d] # service heartbeat start; ssh centfils 'service heartbeat start'

测试

wKioL1grNTGAFt1bAAAkJvewVyo421.png



本文转自 元婴期 51CTO博客,原文链接:http://blog.51cto.com/jiayimeng/1872759



相关文章
|
Web App开发 测试技术 Windows
一起谈.NET技术,部署Silverlight及Web Service
  一直通过vs测试Silverlight,本以为部署到服务器上是很简单的事。  没想到遇到了很多麻烦,用了整整一天的时间搜索解决方案。   先说部署到xp系统下本地IIS,服务器win2003也一样。
973 0
|
Java 网络架构 应用服务中间件
|
Web App开发 存储 数据安全/隐私保护
|
网络协议 应用服务中间件 网络安全
|
.NET 开发框架 网络架构
|
Web App开发 XML .NET