`
heihubao
  • 浏览: 7809 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

服务器运维之葵花宝典

 
阅读更多
挂载数据盘
格式化 mkfs.ext3 /dev/vdb
挂载,当前有效,重启后失效
mount -t ext3 /dev/vdb /data
永久挂载
要修改/etc/fstab文件。
加一行字:
/dev/vdb                /data                   ext3    defaults        0 0
安装JDK
相关准备:
系统环境:  Centos 7 x86_64
JDK:  jdk-7u75.tar.gz
安装:
tar -xzvf  jdk-7u75.tar.gz
解压完毕后的jdk对其做一个ln有助于后期管理
ln –s 源文件  目标文件(不能事先创建好,不然会在目录里边创建软连接)
[root@localhost opt]# ln -s /usr/local/software/jdk1.7.0_75 /usr/local/jdk 
配置:
1).安装完成后需要配置环境变量,方法有几种,下面说一种(修改profile文件):
[root@localhost opt]# vim /etc/profile
2).打开后,在最后添加一下语句:
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
注:这些目录都是活的,根据自己安装的路径来修改,不要照着就复制,先看看自己系统的情况
3).保存退出后,让其生效.
[root@localhost ~]# source /etc/profile

测试:
Java –version
Javac


安装tomcat
安装单进程tomcat
tar –xvhf apache-tomcat-7.0.47
ln –s apache-tomcat-7.0.47 tomcat
vi /etc/profile  在最下面输入
export CATALINA_HOME=/root/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
启动tomcat
startup.sh
tomcat开机自启动
修改Tomcat/bin/startup.sh 为:
export JAVA_HOME=/usr/java/j2sdk1.4.2_08
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/usr/local/tomcat
/usr/local/tomcat/bin/catalina.sh start
在/etc/rc.d/rc.local中加入:
/usr/local/tomcat/bin/startup.sh
方法二
vi /etc/rc.local
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
/usr/local/web_tomcat/8070/bin/startup.sh

安装MYSQL
Copy文件
scp  –r  root@10.0.0.0:/data/ storage/mysql-5.5.24-linux2.6-x86_64.tar.gz .
mysql二进制包安装
   1.安装依赖包
yum install libaio

如果报错
E: Unable to locate package libaio


2.创建mysql系统用户和组
groupadd mysql
useradd -r -g mysql mysql
   3.解压安装包到/usr/local/里
tar –xvhf mysql-5.5.24-linux2.6-x86_64.tar.g
  3.1创建软连接和数据存储目录并进行挂载
  ln –s mysql-5.5.24-linux2.6 mysql
  mkdir /data/mysql-data 
4.进入mysql和/data/mysql-data目录将mysql的用户和组改为mysql:mysql
chown -R mysql:mysql .
5.在mysql目录下运行
scripts/mysql_install_db
--user=mysql
--basedir=/usr/local/mysql --datadir=/data/mysql-data
6.将配置文件考出
cp support-files/my-medium.cnf /etc/my.cnf
6.1 修改support-files/mysql.server下面两项根据自己的目录定义
basedir=/usr/local/mysql
datadir=/data/mysql-data
7.将启动命令考出
cp support-files/mysql.server /etc/init.d/mysqld
8.将mysql命令添加到环境变量vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
9.安装完成,启动
service mysqld start
安全模式启动./mysqld_safe --defaults-file=/etc/my.cnf --user=root &
chkconfig --list查看是否开机启动
加入开机启动
chkconfig --add mysqld
然后用这个命令设置开机启动:
chkconfig mysqld on
最后确认一下是否设置成功
安装mongodb
安装mongodb数据库
1.解压安装包到/usr/local/里
tar –xvhf mongodb-linux-x86_64-rhel62-3.0.2
2.通过mv命令改变mongodb名
mvmongodb-linux-x86_64-rhel62-3.0.2   mongodb
3.创建数据存储路径和日志文件
mkdir /data/mongodb
touch /data/mongodblogs
4.新建配置文件,通过配置文件启动数据库
vi /etc/mongo.conf
dbpath = /data/mongodb
logpath=/var/log/mongo.log
logappend = true
port = 27017
fork = true
auth  = false
5.将mongod命令添加到环境变量vi ~/.bash_profile
export PATH=$PATH:/usr/local/mongodb/bin
6.启动
mongod -f /etc/mongo.conf
7.关闭
db.shutdownServer()
1. use admin
2. db.shutdownServer();
安装Nginx
Nginx的安装
首先要安装编译环境
[root@mysql-virt ~]# yum install gcc
[root@mysql-virt ~]# yum install gcc-c++
安装pcre库
同样先将安装包移动到一个自定义的目录里
[root@mysql-virt ~]# mv pcre-8.35.tar.gz /usr/local/software/
进入/usr/local/software/目录
[root@mysql-virt ~]# cd /usr/local/software/
将安装包解压
[root@mysql-virt software]# tar -xvhf pcre-8.35.tar.gz
切换到pcre-8.35目录
[root@mysql-virt software]# cd pcre-8.35
运行配置文件
[root@mysql-virt pcre-8.35]# ./configure
[root@mysql-virt pcre-8.35]# make
[root@mysql-virt pcre-8.35]# make install
安装zlib库
同样先将安装包移动到一个自定义的目录里
[root@mysql-virt~]# mv zlib.tar.gz /usr/local/software/
进入/usr/local/software/目录
[root@mysql-virt ~]# cd /usr/local/software/
将安装包解压
[root@mysql-virt software]# tar -xvhf zlib.tar.gz
切换进入zlib-1.2.8目录
[root@mysql-virt software]# cd zlib-1.2.8
运行配置文件
[root@mysql-virt zlib-1.2.8]# ./configure
[root@mysql-virtzlib-1.2.8]# make
[root@mysql-virt zlib-1.2.8# make install
安装nginx
切换到一个自定义的目录
[root@mysql-virt ~]# cd /usr/local/software/
解压该安装包
[root@mysql-virt software]# tar -xvhf nginx-1.9.0.tar.gz
切换到nginx-1.9.0目录
[root@mysql-virt software]# cd nginx-1.9.0
运行配置文件
./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/software/pcre-8.35 --with-zlib=/usr/local/software/zlib-1.2.8/ --with-http_gunzip_module
--with-http_gzip_static_module
--with-http_realip_module
--with-http_ssl_module需要https的时候安装

[root@virtual nginx-1.5.7]# make
[root@virtual nginx-1.5.7]# make install
运行nginx
[root@mysql-virt ~]# /usr/local/nginx-1.9.0/sbin/nginx
查看端口号
[root@mysql-virt ~]#netstat -ano|grep 80
防火墙开启80端口
在浏览器里输入ip地址访问ngnix
安装NFS
服务端
yum install nfs-utils
yum install portmap
1. 启动nfs
      /etc/init.d/rpcbind start
      /etc/init.d/nfs start
2. 配置nfs
Vi /etc/exports
# /home/nfs  192.168.1.117(rw,sync)
/data/dev_storage/ 192.168.1.0/24(rw,sync,all_squash,anonuid=99,anongid=99,insecure)
3. 重启服务
/etc/init.d/rpcbind restart
      /etc/init.d/nfs restart
5.客户端安装nfs
yum install nfs-utils
yum install portmap
4. 客户端挂载文件
Mkdir /home/data
Mount -t nfs 192.168.1.143:/home/nfs /home/data
5. 客户端永挂载客户端
vi /etc/fstab 在最后添加
192.168.1.143:/home/nfs /home/data nfs defaults
保存退出
mount –a
或者
vi /etc/rc.local添加开机启动
mount.nfs 192.168.1.10:/data/upload-dev /mnt/upload-dev
安装samba
rpm -qa | grep samba
yum install samba,samba-client
service nmb start
service smb start


vi /etc/samba/smb.conf\
  
        security = share
        passdb backend = tdbsam
  [storage]
        comment = DevStorage
        path = /mnt/storage
        public = yes
        writable = yes
        oplocks = no
        create mode = 766
        directory mode = 766
        guest ok = yes

安装Memcache
Memcache安装
1.安装libevent(依赖的库文件)
tar  –xvhf  libevent-2.0.20-stable.tar.gz
cd libevent-2.0.20-stable
./configure  -prefix=/usr/local/libevent
make&&make install
依赖c编译器,报错,先安装c环境yum install gcc
2安装memcache
Tar -xvhf memcached-1.4.15.tar.gz
Ln –s memcached1.4.15memcached
Cd memcached
./configure  --with-libevent=/usr/local/libevent
make&&make install
开启进程
./memcached -d -u root -p 11213 -m 64
MySQL定时备份
让linux每天定时备份MySQL数据库并删除五天前的备份文件

1、创建备份文件夹
#cd /home/test

2、编写运行脚本
#vi  /usr/sbin/bakmysql.sh


#!/bin/sh
# Name:bakmysql.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
#
backupdir=/home/test
time=`date +%Y%m%d%H`
/usr/local/mysql/bin/mysqldump -u root -ptest db1 | gzip > $backupdir/db1_$time.sql.gz
/usr/local/mysql/bin/mysqldump -u root -ptest db2 | gzip > $backupdir/db2_$time.sql.gz
#
find $backupdir -name "db1_*.sql.gz" -type f -mtime +5 -exec rm -rf {} \; > /dev/null 2>&1
find $backupdir -name "db2_*.sql.gz" -type f -mtime +5 -exec rm -rf {} \; > /dev/null 2>&1
保存退出


3、为脚本添加执行权限
# chmod +x /usr/sbin/bakmysql.sh

4、修改/etc/crontab(在centOS5中测试可行)
#vi /etc/crontab
在最后一行中加入:
00 3 * * * root /usr/sbin/bakmysql.sh
表示每天3点00分执行备份

注:crontab配置文件格式如下:
分 时 日 月 周  命令

5、重启crontab
# /etc/rc.d/init.d/crond restart
完成。


mongo定时备份

2、编写运行脚本
#vi  /usr/sbin/bakmongo.sh

#!/bin/sh
# Name:bakmongo.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
#
backupdir=/home/test
time=`date +%Y%m%d%H`
/usr/local/mongodb/bin/mongodump -h 127.0.0.1 -u admin_sa -p admin_sa --authenticationDatabase admin  -d db2 -o $backupdir/mongo_db2_$time   >/dev/null 2>&1


/usr/local/mongodb/bin/mongodump -h 127.0.0.1 -u admin_sa -p admin_sa --authenticationDatabase admin  -d db3 -o $backupdir/mongo_db3_$time   >/dev/null 2>&1

sleep 1 睡眠1秒
sleep 1s 睡眠1秒
sleep 1m 睡眠1分
sleep 1h 睡眠1小时
tar -zcvf $backupdir/mongo_db2_$time.tar.gz $backupdir/mongo_db2_$time  >/dev/null 2>&1

tar -zcvf $backupdir/mongo_db3_$time.tar.gz $backupdir/mongo_db3_$time  >/dev/null 2>&1
#不加>/dev/null 2>&1,造成无法输出,打包文件为空
rm -rf  $backupdir/mongo_db2_$time
rm -rf  $backupdir/mongo_db3_$time


find $backupdir -name "mongo_db2_*.tar.gz" -type f -mtime +5 -exec rm -rf {} \; > /dev/null 2>&1

find $backupdir -name "mongo_db3_*.tar.gz" -type f -mtime +5 -exec rm -rf {} \; > /dev/null 2>&1





在backup查看是否同步成功:



可以看到已经成功同步过去,同样在backup插入到user表数据,一样同步过去,双主就做成功了。
Mongo
双主安装
1、安装mongodb
[root@mongodb1 ~]# tar -zxvfmongodb-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 #开启用户验证
2、从服务器配置文件
[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

keepalived主机配置
! Configuration File for keepalived
global_defs {  
router_id  mongodb
}
vrrp_script mongo_check {  
script "/etc/keepalived/bin/mongo_check.sh"  
interval 5   #监控时间间隔
weight 2  #权重
}
vrrp_instance VI_1 {   
state BACKUP       #两台均为都为BACKUP   
interface  eth0   
virtual_router_id 51   
priority  100   
advert_int  1   
nopreempt   
authentication {       
auth_type PASS       
auth_pass 1111   
}  
track_script {        
mongo_check   
}   
virtual_ipaddress {       
172.24.0.11   
}
}


2、backup主机配置
! Configuration File for keepalived
global_defs {  
router_id mongodb
}
vrrp_script mongo_check {  
script "/etc/keepalived/bin/mongo_check.sh"  
interval 5
}
vrrp_instance VI_1 {   
state BACKUP       #两台均为都为BACKUP   
interface eth0   
virtual_router_id 51   
priority 80   
advert_int 1   
authentication {       
auth_type PASS       
auth_pass 1111   
}   
track_script {        
mongo_check   
}   
virtual_ipaddress {       
172.24.0.11   
}
}

3、两台主机上分别配置
vim /etc/keepalived/bin/mongo_check.sh
#!/bin/sh
MONGO_BIN='/usr/local/mongodb/bin'
MOGO_MASTER_HOST='127.0.0.1'
MOGO_MASTER_PORT=27017
$MONGO_BIN /mongo
$MOGO_MASTER_HOST:$MOGO_MASTER_PORT/admin --eval "db.stats()"

4、启动keepalived服务



远程灾难备份
Linux  scp+ssh
scp无密码登录
从A复制文件到B,
在A执行
ssh-keygen -t rsa
cp   ~/.ssh/id_rsa.pub到B
追加输出到文件
cat  id_rsa.pub >> ~/.ssh/authorized_keys

cron定时备份并远程发送文件


vi /etc/crontab
加一行
00 4 * * * root /usr/sbin/remote_dbbak.sh

vi /usr/sbin/remote_dbbak.sh

#!/bin/sh

time=`date +%Y%m%d`03
scp /data/dev_storage/dbbak/mongo_db_$time.tar.gz   root@10.75.9.97:/data/dbbak/mongo_db_$time.tar.gz

授权chmod +x  remote_dbbak.sh


或者B主动从A获取文件
在B执行
ssh-keygen -t rsa
cp   ~/.ssh/id_rsa.pub到A
追加输出到文件
cat  id_rsa.pub >> ~/.ssh/authorized_keys
scp  root@10.0.0.5:/data/dbbak/aa.gz    /data/10_0_0_5_db/aa.gz

数据库HA
环境描述:
OS:CentOS6.5_X64
MASTER:192.168.1.15
BACKUP:192.168.1.12
VIP:192.168.1.16(虚拟ip无须真实物理机)






192.168.1.15 192.168.1.12
心跳

                        
复制




mysql配置双主数据同步
1、配置master
[root@master ~]# yum install mysql-server mysql -y       #安装mysql
[root@master ~]# service mysqld start
[root@master ~]# mysqladmin -u root password test    #修改密码
[root@master ~]# vi /etc/my.cnf  #开启二进制日志,设置id
[mysqld]
server-id = 1                    #backup这台设置2
log-bin = mysql-bin
binlog-do-db = test   #要同步的库
binlog-ignore-db = mysql,information_schema      #忽略写入binlog日志的库
auto-increment-increment = 2            #字段变化增量值
auto-increment-offset = 1              #初始字段ID为1
slave-skip-errors = all                      #忽略所有复制产生的错误   
skip-name-resolve  #禁止ip反解成域名(解决链接错误Lost connection to MySQL server at ‘reading initial communication packet', system error: 0)
[root@master ~]# service mysqld restart
安装到此

2、配置backup
[root@backup~]# yum install mysql-server mysql -y       #安装mysql
[root@backup~]# service mysqld start
[root@backup~]# mysqladmin -u root password test    #修改密码
[root@backup~]# vi /etc/my.cnf  #开启二进制日志,设置id
[mysqld]
server-id = 2                    #backup这台设置2
log-bin = mysql-bin
binlog-do-db = test   #要同步的库
binlog-ignore-db = mysql,information_schema      #忽略写入binlog日志的库
auto-increment-increment = 2            #字段变化增量值
auto-increment-offset = 1              #初始字段ID为1
slave-skip-errors = all                      #忽略所有复制产生的错误  
skip-name-resolve  #禁止ip反解成域名
  
[root@ backup ~]# service mysqld restart


#先查看下log bin日志和pos值位置



master配置如下:

[root@ master ~]# mysql -u root -ptest
mysql> GRANT  REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.%' IDENTIFIED  BY 'replication';
mysql> flush  privileges;
mysql> change  master to
    ->  master_host='192.168.1.12',
    ->  master_user='replication',
    ->  master_password='replication',
    ->  master_log_file='mysql-bin.000001',
    ->  master_log_pos=106;  #对端状态显示的值
mysql> start  slave;        #启动同步

backup配置如下:

[root@backup ~]#  mysql -u root -ptest
mysql> GRANT  REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.%' IDENTIFIED  BY 'replication';
mysql> flush  privileges;
mysql> change  master to
    ->  master_host='192.168.1.15',
    ->  master_user='replication',
    ->  master_password='replication',
    ->  master_log_file='mysql-bin.000001',
    ->  master_log_pos=106;
mysql> start  slave;

#主主同步配置完毕,查看同步状态Slave_IO和Slave_SQL是YES说明主主同步成功。



在master插入数据测试下:



在backup查看是否同步成功:



可以看到已经成功同步过去,同样在backup插入到user表数据,一样同步过去,双主就做成功了。

配置keepalived实现热备
keepalived是提供health-check工具,keepalived基于vrrp (虚拟路由冗余协议)。
keepalived 经常用于高可用场合,通常搭配LVS,nginx,haproxy等负载均衡器,是一个成熟的高可用方案。

1、keepalived 默认需要使用D类多播地址224.0.0.18 进行心跳通信

2、keepalived 使用vrp协议进行通信(协议号码为112)

防火墙示例 (仅在CentOS下测试通过)
                                                                                   # keepalived
/sbin/iptables -A INPUT -i eth1 -d 224.0.0.0/8 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -p 112 -j ACCEPT
检测两个keepalived主机之间是否能通信的办法有
1、停掉一个keepalived,看另外一个keepalived的日志/var/log/messages 里是否有新的日志
2、用嗅探器抓包,例如:
tcpdump -v -i eth1 host 224.0.0.18
tcpdump -vvv -n -i eth1 host 224.0.0.18


[root@ master ~]# yum install -y pcre-devel openssl-devel popt-devel #安装依赖包
[root@master ~]# wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
[root@master ~]# tar zxvf keepalived-1.2.7.tar.gz
[root@master ~]# cd keepalived-1.2.7
[root@master ~]#./configure --prefix=/usr/local/keepalived
make && make install

#将keepalived配置成系统服务

[root@master ~]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived   /etc/init.d/
[root@master ~]# cp /usr/local/keepalived/etc/sysconfig/keepalived   /etc/sysconfig/
[root@master ~]# mkdir /etc/keepalived/
[root@master ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf   /etc/keepalived/
[root@master ~]# cp /usr/local/keepalived/sbin/keepalived  /usr/sbin/

[root@master ~] # vi /etc/rc.local   #添加开机启动
/etc/init.d/keepalived start
[root@master ~]# vi /etc/keepalived/keepalived.conf


1.master
! Configuration File for keepalived

global_defs {
   notification_email {
     test1@qq.com
   }
   notification_email_from test2@qq.com
   smtp_server mail.qq.com
   smtp_connect_timeout 30
   router_id MYSQL_HA
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0  #如果是单网卡可以跟当前ip网卡绑定一致
    virtual_router_id 51
    priority 100
    advert_int 1
    nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置
    authentication {
        auth_type PASS  #加密
        auth_pass 1111  #加密密码
    }
    virtual_ipaddress {
        192.168.1.16
    }
}

virtual_server 192.168.1.16 3306 {
    delay_loop 2  #每个2秒检查一次real_server状态
    #lb_algo rr
    #lb_kind NAT
    #nat_mask 255.255.255.0
    persistence_timeout 50   #会话保持时间
    protocol TCP

    real_server 192.168.1.15 3306 {
        weight 3
        notify_down  /usr/local/keepalived/mysql.sh #检测到服务down后执行的脚本
        TCP_CHECK {
            connect_timeout 3 #连接超时时间
            nb_get_retry 3 #重连次数
            delay_before_retry 3 #重连间隔时间
        }
    }
}
1. 注:此脚本是上面配置文件notify_down选项所用到的,keepalived使用notify_down选项来检查real_server的服务状态,当发现real_server服务故障时,便触发此脚本;
2. 我们可以看到,脚本就一个命令,通过pkill keepalived强制杀死keepalived进程,从而实现了MySQL故障自动转移。 (mongo+mysql在同一个台服务器上,不能执行这个命令)

2.backup
! Configuration File for keepalived

global_defs {
   notification_email {
     test1@qq.com
   }
   notification_email_from test2@qq.com
   smtp_server mail.qq.com
   smtp_connect_timeout 30
   router_id MYSQL_HA
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
   
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.16
    }
}
virtual_server 192.168.1.16 3306 {
    delay_loop 2
    #lb_algo rr
    #lb_kind NAT
    #nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.1.12 3306 {
        weight 3
        notify_down  /usr/local/keepalived/mysql.sh 
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
#可以不做配置
[root@master ~]# vi /usr/local/keepalived/mysql.sh
#!/bin/bash
pkill keepalived
[root@master ~]# chmod +x /usr/local/keepalived/mysql.sh
[root@master ~]# /etc/init.d/keepalived start



#backup服务器只修改priority为90、nopreempt不设置、real_server设置本地IP。


#授权两台Mysql服务器允许root远程登录,用于在其他服务器登陆测试!
mysql> grant all on *.* to'root'@'192.168.1.%' identified by 'test';
mysql> flush privileges;
3、测试高可用性
1、通过Mysql客户端通过VIP连接,看是否连接成功。
2、停止master这台mysql服务,是否能正常切换过去,可通过ip addr命令来查看VIP在哪台服务器上。
15mysql停掉前
 
停掉后,ip映射到12


3、可通过查看/var/log/messges日志,看出主备切换过程
4、master服务器故障恢复后,是否主动抢占资源,成为活动服务器。
应该不抢占资源,继续backup为主,master为备

Mongo
mongod支持的集群部署方式有3种:
1、master-slave
2、replica set
3、sharding
master-slave可以解决备份的问题,但是无法透明地HA,所以也不大好;sharding是mongo的一个亮点特性,可以自动分片。但是根据我的测试结果,在单集合达到2000万条数据的门槛之后,sharding才开始体现出性能优势,而sharding的数据是分布式的,所以备份会比较复杂,而且也需要更多的服务器,不利于成本。还是使用replica set方式的集群部署比较合适。可以解决HA,备份,读写分离的问题

双主安装
1、安装mongodb
[root@mongodb1 ~]# tar -zxvfmongodb-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 #开启用户验证
2、从服务器配置文件
[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
keepalived主机配置
! Configuration File for keepalived
global_defs {  
router_id  mongodb
}
vrrp_script mongo_check {  
script "/etc/keepalived/bin/mongo_check.sh"  
interval 5   #监控时间间隔
weight 2  #权重
}
vrrp_instance VI_1 {   
state BACKUP       #两台均为都为BACKUP   
interface  eth0   
virtual_router_id 51   
priority  100   
advert_int  1   
nopreempt   
authentication {       
auth_type PASS       
auth_pass 1111   
}  
track_script {        
mongo_check   
}   
virtual_ipaddress {       
172.24.0.11   
}
}


2、backup主机配置
! Configuration File for keepalived
global_defs {  
router_id mongodb
}
vrrp_script mongo_check {  
script "/etc/keepalived/bin/mongo_check.sh"  
interval 5
}
vrrp_instance VI_1 {   
state BACKUP       #两台均为都为BACKUP   
interface eth0   
virtual_router_id 51   
priority 80   
advert_int 1   
authentication {       
auth_type PASS       
auth_pass 1111   
}   
track_script {        
mongo_check   
}   
virtual_ipaddress {       
172.24.0.11   
}
}

3、两台主机上分别配置
vim /etc/keepalived/bin/mongo_check.sh
#!/bin/sh
MONGO_BIN='/usr/local/mongodb/bin'
MOGO_MASTER_HOST='127.0.0.1'
MOGO_MASTER_PORT=27017
$MONGO_BIN /mongo
$MOGO_MASTER_HOST:$MOGO_MASTER_PORT/admin --eval "db.stats()"

4、启动keepalived服务

Redis安装
1 、wget http://download.redis.io/releases/redis-4.0.9.tar.gz
tar -zxf redis-4.0.9.tar.gz
cd redis
make
make install

2、设置绑定ip
vi redis.conf
bind 127.0.0.1
3、设置后台启动redis
将daemonize属性改为yes
vi redis.conf
将no修改为yes

4、执行redis-server 启动redis
./redis-server redis.conf

分享到:
评论

相关推荐

    机房服务器运维监测监控系统解决方案报告建议书模板范文(完整方案).docx.docx

    机房服务器运维监测监控系统解决方案报告建议书模板范文(完整方案).docx.docx机房服务器运维监测监控系统解决方案报告建议书模板范文(完整方案).docx.docx机房服务器运维监测监控系统解决方案报告建议书模板范文...

    服务器运维方案.docx

    服务器运维是IT基础设施的核心环节,涉及硬件系统、网站运行、网络通信、软件环境以及服务器负载和安全性等多个方面。以下是对这些关键领域的详细说明: 1. **硬件系统管理**: - **服务器运行稳定性**:确保...

    绝对实用的服务器运维资料--服务器运维白皮书

    最新、很好、绝对实用的服务器运维资料,也可做为服务器维护规范文件

    服务器运维工具-日志收集-logCollect-Linux.zip

    《服务器运维工具LogCollect在Linux环境中的应用》 在IT运维领域,日志管理是至关重要的环节,它有助于监控系统状态、排查问题以及优化性能。本文将深入探讨一款名为"LogCollect"的服务器运维工具,它专为Linux系统...

    《服务器运维操作手册》.docx

    《服务器运维操作手册》是一份详细的服务器运维操作指南,涵盖了服务器基础设施建设、系统安装与配置、数据备份与恢复、安全防护、故障排除等多个方面,为服务器运维人员提供了一个全面且实用的操作指南。...

    服务器运维工程师岗位的基本职责.docx

    服务器运维工程师是一个关键的技术岗位,负责公司平台服务器的在线、日常运行维护和优化、服务器和网络设备的日常维护、分析服务器的各种性能监控数据和故障日志、研究运维相关技术、设计和实现分布式集群和服务器...

    服务器运维管理手册.doc

    【服务器运维管理手册】是XXXX有限公司运维服务部为了规范服务器的管理和故障处理而制定的一份详细文档。该手册旨在提供标准的服务器故障处理方法,并积累服务器管理知识库,以提升服务运维的主动性和可控性。 **...

    服务器硬件运维巡检报告模板.pdf

    服务器硬件运维巡检是服务器管理员的日常工作之一,目的是为了确保服务器的稳定运行和高效运维。服务器硬件运维巡检可以帮助管理员发现和解决服务器硬件故障,避免服务器宕机和数据丢失。 2. 物理环境检查的重要性 ...

    DevOps故障排除 linux服务器运维最佳实践

    《DevOps故障排除:Linux服务器运维最佳实践》首先介绍了故障排除中要掌握的基本方法和原则,然后针对Linux系统中的常见问题,逐个分析故障原因并给出故障排除方法,这些问题包括服务器运行缓慢、系统无法启动、不能...

    基于Python的服务器运维可视化研究与应用.pdf

    传统的服务器运维方式存在诸多问题,例如手动操作繁琐、效率低下,运维人员难以直观发现服务器存在的问题,且在夜间突发状况发生时,运维人员无法第一时间了解并处理。为了提高服务器运维的效率和自动化水平,本文...

    网络管理与运维实战宝典 (2).pdf

    《网络管理与运维实战宝典》是一本深入探讨网络管理和运维实践的专业书籍,它关注的是在信息化进程中,网络管理面临的挑战以及如何构建高效且安全的网络运维体系。本书的讨论内容紧密围绕网络信息安全,强调了体系化...

    机房服务器运维监测监控系统解决方案报告建议书模板范文(完整方案).docx.pdf

    机房服务器运维监测监控系统解决方案报告建议书模板范文(完整方案).docx.pdf机房服务器运维监测监控系统解决方案报告建议书模板范文(完整方案).docx.pdf机房服务器运维监测监控系统解决方案报告建议书模板范文(完整...

    小鸟云应用(云服务器运维管理工具)v1.1.18.2官方安装版

    小鸟云应用是由深圳前海小鸟云计算有限公司专为广大中小站长打造的云服务器运维管理工具。它采用跨云多平台一站式批量云服务器安全管理服务,全面支持各大云厂商,支持超过20多个云服务器系统版本,并集成Windows...

    2022年最新运维+测试+实施面试宝典,宝典在手,高薪我有!!!!2022年最新运维+测试+实施面试宝典,宝典在手,高薪我有!!

    2022年最新运维+测试+实施面试宝典,宝典在手,高薪我有!!!!2022年最新运维+测试+实施面试宝典,宝典在手,高薪我有!!

    高性能Linux服务器构建实战:运维监控、性能调优与集群应用.pdf

    Linux服务器作为高性能的网络架构基础,其运维监控、性能调优以及集群应用对于保障企业业务连续性和稳定性至关重要。本书《高性能Linux服务器构建实战:运维监控、性能调优与集群应用.pdf》深入探讨了这些核心主题,...

    运维服务器巡检记录表修正版.doc

    《运维服务器巡检记录表修正版》是IT运维工作中的一个重要文档,主要用于记录和跟踪服务器的健康状况,确保系统的稳定运行。以下是对该记录表各项内容的详细解释: 1. **指示灯状态**:服务器上的指示灯是硬件状态...

    联动北方-企业级IT运维宝典之WebLogic实战

    《联动北方-企业级IT运维宝典之WebLogic实战》是一本深入探讨WebLogic服务器运维技术的专业书籍。WebLogic作为Oracle公司的一款企业级Java应用服务器,广泛应用于大型企业的核心业务系统,因此掌握其运维知识对于IT...

    网络安全与运维工程师必备宝典

    网络安全与运维工程师必备宝典

Global site tag (gtag.js) - Google Analytics