Fedora 15上做双主模型的集群 拓扑如下所示:
----------- ----------
| HA1 |____| HA2 |
|__________| |________| HA1:
IP:192.168.1.78/24
HA2:
IP:192.168.1.151/24
VIP:192.168.1.110
一、配置网络属性
HA1:
#ifconfit eth0 192.168.1.78/24
#route add default gw 192.168.1.1
#hostname node1.linuxidc.com
HA2:
#ifconfig eth0 192.168.1.151/24
#route add default gw 192.168.1.1
#hostname node2.linuxidc.com 二、配置主机名及两个之间不实用密码能相互通信
#vim /etc/hosts 添加如下内容
192.168.1.78 node1.linuxidc.com node1
192.168.1.151 node2.linuxidc.com node2
同样在HA2上也添加这些内容
#ping node2|node1能解析出来就OK啦 分别在两个HA上生成一对密钥,如下所示
[root@node1 ~]# ssh-keygen -t rsa //生成公钥和密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:
59:71:5d:4d:4c:6d:71:b1:ec:04:17:26:49:cb:27:a1 root@node1.linuxidc.com
The key's randomart image is:
+--[ RSA 2048]----+
| . o*.@@|
| oo.X B|
| .E + * |
| o = |
| S . |
| |
| |
| |
| | //这个图案就是所谓的指纹信息吧,呵呵,RedHat上没有
+-----------------+
[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2 //拷贝公钥到对方机 器上
The authenticity of host 'node2 (192.168.1.151)' can't be established.
RSA key fingerprint is 77:b6:c6:09:51:f9:f4:70:c1:35:81:47:a5:19:f4:d2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'node2,192.168.1.151' (RSA) to the list of known hosts.
root@node2's password: //输入对方机器的密码
Now try logging into the machine, with "ssh 'root@node2'", and check in: ~/.ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.
在HA2上做同上的操作,我就不具体演示了! 三、配置yum源,我使用的是163做的镜像源
http://mirrors.163.com/
这上面有对应Fedora的yum源配置使用的说明,我就不做详细阐述了
如果你没有DNS解析域名,还要在/etc/hosts文件中手动添加解析奥,我的如下:
66.35.62.166 mirrors.Fedoraproject.org
213.129.242.84 mirrors.rpmfusion.org
123.58.173.106 mirrors.163.com
这些对应的域名和IP关系大家都会,就是使用ping可以解析出,不解释! 四、安装集群软件
两个节点上都要做的
#yum install corosync pacemaker -y //由于是网络镜像,会比较慢,耐心等会吧! 安装完成之后就是配置了,注意配置的时候选择的端口和地址不能跟已存在的集群冲突,所 以我就做了一下简单的设置
#export ais_port=4000
#export ais_mcast=226.94.1.1 接下来就是配置corosync了:
#cd /etc/corosync/
#cp corosync.conf.example corosync.conf
#vim !$ 把配置改成如下
# Please read the corosync.conf.5 manual page
compatibility: whitetank totem {
version: 2
secauth: on
threads: 0
interface {
ringnumber: 0
bindnetaddr: 192.168.1.0 //指定集群所在的网段的网络号
mcastaddr: 226.94.1.1 //组播地址
mcastport: 4000 //端口号
ttl: 1
}
} logging {
fileline: off
to_stderr: no
to_logfile: yes
to_syslog: no
logfile: /var/log/cluster/corosync.log
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
amf {
mode: disabled
}
####以下是添加的内容
service {
ver: 1 //定义pacemaker的版本,Fedora上使用版本1,而在RedHat上可以 使用0
name: pacemaker
}
aisexec {
user: root
group: root
}
其中注释的内容为所修改的内容
配置完成之后,拷贝一个到另一个节点上
#scp -p /etc/corosync/corosync.conf node2:/etc/corosync/ 确保没有错误的情况下,可以在HA1上启动了,启动之后还要进行一些列的检测
#/etc/init.d/corosync start 添加认证密钥
#corosync-keygen //这个要是新机器的话,时间会长一点,要有点耐性等待!
#scp -p authkeys corosync.conf node2:/etc/corosync/
配置完成之后,现在HA1上启动corosync:
#server corosync start
Starting corosync (via systemctl): [ OK ] oK,corosync 服务启动成功!
接下来就是检测集群是否正确启动并且已经可以和其他节点建立集群关系了:
查看corosync引擎是否正常启动:
[root@node1 ~]# grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/messages
Sep 18 23:09:44 node1 smartd[786]: Opened configuration file /etc/smartd.conf
Sep 19 13:41:03 node1 smartd[801]: Opened configuration file /etc/smartd.conf
Sep 19 20:44:55 node1 smartd[680]: Opened configuration file /etc/smartd.conf
[root@node1 ~]# grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/cluster/corosync.log
Sep 18 17:12:06 corosync [MAIN ] Corosync Cluster Engine ('1.4.1'): started and ready to provide service.
Sep 18 17:12:06 corosync [MAIN ] Successfully read main configuration file '/etc/corosync/corosync.conf'.
Sep 18 17:12:06 corosync [MAIN ] Corosync Cluster Engine exiting with status 8 at main.c:1702.
Sep 18 17:16:11 corosync [MAIN ] Corosync Cluster Engine ('1.4.1'): started and ready to provide service. 查看初始化成员节点通知是否正常发出:
[root@node1 ~]# grep TOTEM /var/log/cluster/corosync.log 检查启动过程中是否有错误产生:
[root@node2 ~]# grep ERROR: /var/log/cluster/corosync.log | grep -v unpack_resources 查看pacemaker是否正常启动:
[root@node1 ~]# grep pcmk_startup /var/log/cluster/corosync.log
Sep 19 13:48:48 corosync [pcmk ] info: pcmk_startup: CRM: Initialized
Sep 19 13:48:48 corosync [pcmk ] Logging: Initialized pcmk_startup
Sep 19 13:48:48 corosync [pcmk ] info: pcmk_startup: Maximum core file size is: 4294967295
Sep 19 13:48:48 corosync [pcmk ] info: pcmk_startup: Service: 9
Sep 19 13:48:48 corosync [pcmk ] info: pcmk_startup: Local hostname: node1.luo
检查完毕,接下来就可以启动另一个节点了,最好在同一个节点上启动所有的其他的集群节 点:
[root@node1 ~]# ssh node2 -- '/etc/init.d/corosync start'
Starting corosync (via systemctl): [ OK ]
启动成功了! 接下来就是启动pacemaker了!
[root@node1 corosync]# /etc/init.d/pacemaker start
Starting pacemaker (via systemctl): [ OK ]
ok,同样启动成功 # ps axf //查看进程
1724 ? R 5:59 /usr/lib/heartbeat/stonithd
1725 ? R 5:59 /usr/lib/heartbeat/cib
1726 ? S 0:00 /usr/lib/heartbeat/lrmd
1727 ? R 5:59 /usr/lib/heartbeat/attrd
1728 ? S 0:00 /usr/lib/heartbeat/pengine
1729 ? R 5:59 /usr/lib/heartbeat/crmd
可以看出已经有进程了 当然这个时候有个关键性的设置,就是关闭防火墙,如果你没有关闭防火墙功能,下面将会 给你带来很大的麻烦,我开始就是没有关闭防火墙,后来看日志才知道,所以你做的时候可 以把防火墙先关闭了,但是在真正应用之中,还是要开启防火墙功能
#setup 然后在里面选择Firewall configure 然后disabled就行了 接下来使用crm的内部命令进行查看
#crm_mon 或crm status
Online: [ node2.linuxidc.com node1.linuxidc.com ]可以看出,集群的节点都启动了
一切准备停当,接下来就是双主集群的配置了! 五、安装apache服务和集群文件系统-GFS2
为了方便验证,我就安装一个apache服务用于测试:
#yum install httpd -y
在HA1上的添加测试页面:
#echo "