MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

    *面向集合存储,易存储对象类型的数据。

    *模式自由。

    *支持动态查询。

    *支持完全索引,包含内部对象。

    *支持查询。

    *支持复制和故障恢复。

    *使用高效的二进制数据存储,包括大型对象(如视频等)。

    *自动处理碎片,以支持云计算层次的扩展性。

    *支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

    *文件存储格式为BSON(一种JSON的扩展)。

    *可通过网络访问。----------------以上内容摘自好搜百科

一、下载keepalived和mongodb源码包(第十五为一键安装脚本)

    http://yunpan.cn/cLnMGSt7v2X4s  访问密码 956a

二、安装keepalived

  

       [root@mongodb1 ~]yum -y install gcc  openssl-devel popt popt-devel libnl libnl-devel                          kernel-devel                        #所需依赖包                       
         [root@mongodb1~]# tar -zxvf keepalived-1.2.7.tar.gz
         [root@mongodb1~]# cd keepalived-1.2.7.tar.gz
         [root@mongodb1keepalived-1.2.7]# ./configure         #安装三部曲
         [root@mongodb1keepalived-1.2.7]# make
         [root@mongodb1keepalived-1.2.7]# make install

三、拷贝配置文件和启动脚本    

   

      [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             #开机启动


五、配置文件

        

[root@mongodb1~]#cat /etc/keepalived/keepalived.conf
        
         !Configuration File for keepalived
         vrrp_instance MG_1 {
                state MASTER                                  #mongodb2为BACKUP
                interface eth0
                virtual_router_id 55
                priority 100                                  #优先级,备份为90
                advert_int 1
                #nopreempt                                     #不抢占资源
                authentication {
                    auth_type PASS
                    auth_pass 1111
                }     
                virtual_ipaddress {
            192.168.0.10                                        #虚拟IP
             }
         }
        #从服务器以下可以不设置
            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
            }
            }
            }

五(一)

、cat mongodb.sh
            #!/bin/bash
            service keepalived stop
六、[root@mongodb1 ~]# service keepalived start
         正在启动 keepalived:

                                   [确定]

七、以上配置,在从服务器上除了配置文件的微小差别,其它内容完全相同!

八、命令ip a可查看虚拟IP,成功则显示虚拟IP。

九、安装mongodb

        

 [root@mongodb1 ~]# tar -zxvf mongodb-linux-x86_64-2.4.9.tgz  -C  /usr/local/
         [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
                   nohttpinterface=true
                   master=true                                     #主服务器
                   auth=true

                 #开启用户验证

十、从服务器配置文件

       

 [root@mongodb2 bin]# cat mongodb.conf
                   dbpath=/usr/local/mongodb/db
                   logpath=/usr/local/mongodb/logs/mongodb.log
                   port=27017
                   fork=true
                   nohttpinterface=true
                   slave=true                                       #从服务器
                   source=192.168.0.100:27017                       #从主服务器复制
                   autoresync=true                                  #自动同步
                   auth=true

十一、启动mongodb(两台都启动)---命令路径可添加在bashrc中,如果不会,请百度,百度不到,请找你老大。

    [root@mongodb1 bin]/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf

十二、报错信息:当查看从服务器mongodb日志时显示以下信息,如果你在配置过程当中没有认证用户,主从搭建成功,请忽略报错,如果是其他报错,请百度。

wKiom1ZO3pex_LgIAAB80hnPgco952.png

十三、几经波折,找到原因,对两台进行用户认证。

       [root@mongodb1 bin]/usr/local/mongodb/bin/mongo          #进入数据库

        >use local

        >db.addUser('reql','reql')

      当用户认证之后,从服务器连上主服务器,显示OK,但在OK后显示errmsg:unauthorized,此为未授权

wKioL1ZO4SzwK7goAABGU1pJbzQ174.png

十四、经分析,普通用户认证权限小,所以再进行管理员账户认证。(只在主服务器上认证)注意:在配置文件中的auth=true请注释掉,并重启mongodb

   

  [root@mongodb1 bin]/usr/local/mongodb/bin/mongo          #进入数据库 
        >use admin    
        >db.addUser('tank','test')
        >db.auth('tank','test')                               #数据库认证,必须做

十五、一键安装脚本

#####################Master keepalived+Mongodb##################
#!/bin/bash
# master server
read -p "please enter real server IP: " RIP
read -p "please enter virtual server IP: " VIP
#####################Keepalived####################
yum -y install gcc openssl-devel popt popt-devel libnl libnl-devel kernel-devel
tar -zxvf keepalived-1.2.7.tar.gz 
cd keepalived-1.2.7
./configure
make && make install
cp /usr/local/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived  /etc/sysconfig
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
chkconfig --add keepalived
chkconfig keepalived on 
###################keepalived.conf##################
cat <<EOF > /etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_instance MG_1 {
state MASTER                                  #mongodb2为BACKUP
interface eth0
virtual_router_id 55
priority 100                                  #优先级,备份为90
advert_int 1
authentication {
auth_type PASS
        auth_pass 1111
        }     
virtual_ipaddress {
$VIP                                        #虚拟IP
        }
}
virtual_server $VIP 27017 {
delay_loop 6
lb_algo rr
persistence_timeout 5
protocol TCP
real_server $RIP 27017 {
notify_down /root/mongodb.sh
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 27017
}
}
}
EOF
/etc/init.d/keepalived start
##################Mongodb#############################
cd
tar -zxvf mongodb-linux-x86_64-2.4.9.tgz  -C  /usr/local/
cd /usr/local
mv mongodb-linux-x86_64-2.4.9 mongodb
cd mongodb/
mkdir db
mkdir logs
cd bin
cat <<EOF > /usr/local/mongodb/bin/mongodb.conf
dbpath=/usr/local/mongodb/db                    #数据库目录
logpath=/usr/local/mongodb/logs/mongodb.log     #日志
port=27017                                      #端口
fork=true
nohttpinterface=true
master=true                                     #主服务器
auth=true                                       #开启用户验证
EOF
echo 'PATH=/usr/local/mongodb/bin:$PATH' >> /etc/bashrc
source /etc/bashrc
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf
##################slave keepalive+mongodb##################
#!/bin/bash
# slave server
read -p "please enter the master server: " SIP
read -p "please enter virtual server IP: " VIP
#####################Keepalived####################
yum -y install gcc openssl-devel popt popt-devel libnl libnl-devel kernel-devel
tar -zxvf keepalived-1.2.7.tar.gz 
cd keepalived-1.2.7
./configure
make && make install
cp /usr/local/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived  /etc/sysconfig
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
chkconfig --add keepalived
chkconfig keepalived on 
###################keepalived.conf##################
cat <<EOF > /etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_instance MG_1 {
state BACKUP                                  #mongodb2为BACKUP
interface eth0
virtual_router_id 55
priority 90                                   #优先级,备份为90
advert_int 1
authentication {
auth_type PASS
        auth_pass 1111
        }     
virtual_ipaddress {
$VIP                                        #虚拟IP
        }
}
EOF
/etc/init.d/keepalived start
cd
tar -zxvf mongodb-linux-x86_64-2.4.9.tgz  -C  /usr/local/
cd /usr/local
mv mongodb-linux-x86_64-2.4.9/ mongodb
cd mongodb/
mkdir db
mkdir logs
cd bin
cat <<EOF > /usr/local/mongodb/bin/mongodb.conf
dbpath=/usr/local/mongodb/db
logpath=/usr/local/mongodb/logs/mongodb.log
port=27017
fork=true
nohttpinterface=true
slave=true                                       #从服务器
source=${SIP}:27017                              #从主服务器复制
autoresync=true                                  #自动同步
auth=true
EOF
echo 'PATH=/usr/local/mongodb/bin:$PATH' >> /etc/bashrc
source /etc/bashrc
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf