项目目标:
故障自动切换和自动修复成员节点,各个数据库之间数据完全一致。
项目描述:
副本集没有固定主节点,是整个集群选举得出的一个主节点,当其不工作时变
更其他节点。最小的副本集也应该具备一个
primary
节点和两
secondary
节点。两个节点的副本集不具备真正的故障转移能力。所有
Secondary
都宕机、或则副本集中只
剩下一个节点,则该节点只能为
Secondary
节点,也就意味着整个集群智能进行读操作而不能进行写操作,当其他的恢复时,之前的
primary
节点仍然是
primary
节点
项目环境:
三台服务器
RHEL6.5
keepalived-1.2.7.tar.gz
mongodb-linux-x86_64-2.4.9.tgz
自述:
网上关于mongodb副本集的文档或帖子不是很多,而且有一部分是重复的,所以我把自己的安装过程分享一下,而且这篇文章是我认证博客的论坛帖子。
项目
过程
:(三台安装过程基本
相同
)
(1)安装
安装所需依赖
[root@mongodb1 ~]yum -y install gcc openssl-devel popt popt-devel libnl
libnl-devel kernel-devel
(2)安装keepalived(源码安装三部曲),并将keepalived设置为开机启动
[root@mongodb1 ~]# tar -zxvf keepalived-1.2.7.tar.gz
[root@mongodb1 ~]# cd keepalived-1.2.7.tar.gz
[root@mongodb1 keepalived-1.2.7]# ./configure
[root@mongodb1 keepalived-1.2.7]# make
[root@mongodb1 keepalived-1.2.7]# make install
(3)拷贝keepalive配置文件与启动脚本,
并将keepalived设置为开机启动
[root@mongodb1 ~]# cp /usr/local/etc/rc.d/init.d/keepalived
/etc/rc.d/init.d/
[root@mongodb1 ~]# cp /usr/local/etc/sysconfig/keepalived
/etc/sysconfig
[root@mongodb1 ~]# mkdir /etc/keepalived
[root@mongodb1 ~]# cp /usr/local/etc/keepalived/keepalived.conf
/etc/keepalived/
[root@mongodb1 ~]# cp /usr/local/sbin/keepalived /usr/sbin/
[root@mongodb1 ~]#chkconfig –add keepalived
[root@mongodb1 ~]#chkconfig keepalived on
(4)keeplive配置文件
[root@mongodb1 ~]#cat /etc/keepalived/keepalived.conf
!Configuration File for keepalived
vrrp_instanceMG_1 {
state BACKUP
#三台全为BACKUP
interfaceeth 0
virtual_router_id 55
priority 100
#其中两台优先级为100,最后一台为90
advert_int 1
#nopreempt
#不抢占资源
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.10
#虚拟IP
}
}
#优先级为90的服务器以下可以不设置(还需要进一步完善)
virtual_server 192.168.0.10 27017 {
delay_loop 6
lb_algo rr
persistence_timeout 5
protocol TCP
real_server 192.168.0.100 27017 {
notify_down /root/mongodb.sh
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 27017
}
}
}
(5)
[root@mongodb1 ~]#
cat mongodb.sh
#!/bin/bash
service keepalived stop
(6)启动keepalived
[root@mongodb1 ~]# service keepalived start
注:以上配置,其中两台完全相同,最后一台优先级设定为90,并设置为不抢占资源。
(7)安装mongodb
[root@mongodb1 ~]#
cd /usr/local
[root@mongodb1 local]# tar -zxvf mongodb-linux-x86_64-2.4.9.tgz
[root@mongodb1 local]# mv mongodb-linux-x86_64-2.4.9 mongodb
[root@mongodb1 local]# cd mongodb/
[root@mongodb1 mongodb]# mkdir db
[root@mongodb1 mongodb]# mkdir logs
[root@mongodb1 mongodb]# cd bin
[root@mongodb1 bin]# cat mongodb.conf
dbpath=/usr/local/mongodb/db
#
数据存放路径
logpath=/usr/local/mongodb/logs/mongodb.log
port=27017
fork=true
#
以
守
护进程的方式运行
MongoDB
nohttpinterface=true
#
禁止
HTTP
状态接口默认情况下
Mongodb
在端口
28017
上运行
http
接口
maxConns=5000
#
最大同
时连接数
replSet=mongodb
#
同一副本集
#shardsvr=true
#
启动分片
(8)启动
mongodb
[root@mongodb1 bin]# numactl –interleave=all /usr/local/mongodb/bin/mongod
–config
/usr/local/mongodb/bin/mongodb.conf
(9)
添加命令路径
[root@mongodb1 bin]# vim /etc/bashrc
PATH=/usr/local/mongodb/bin:$PATH
[root@mongodb1 bin]# source /etc/bashrc
[root@mongodb1 ~]# vim /etc/rc.local
numactl –interleave=all /usr/local/mongodb/bin/mongod –config
/usr/local/mongodb/bin/mongodb.conf
#
追加命令,开机启动
(10)
进入
mongodb
[root@mongodb1 ~]#mongo
MongoDB shell version: 2.4.9
connecting to: test
> config = { _id:”mongodb”,members:[
… {_id:0,host:”192.168.0.100:27017″,priority:10},
… {_id:1,host:”192.168.0.200:27017″,priority:10},
… {_id:2,host:”192.168.0.5:27017″,priority:5}]
… }
>rs.initiate(config);
#
初始化副本集配置
>rs.reconfig(cfg)
;
#
重新加载配置文件
注:
rs.add({“_id”:2,”host”:”192.168.0.300:27017″})
#
追加服务器
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30331499/viewspace-2073886/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30331499/viewspace-2073886/