一、安装SNMP新版mongodb需要此依赖安装

安装snmp服务需要的rpm包:

perl-Data-Dumper-2.145-3.el7.x86_64.rpm

net-snmp-5.7.2-28.el7_4.1.x86_64.rpm

net-snmp-agent-libs-5.7.2-28.el7_4.1.x86_64.rpm

net-snmp-libs-5.7.2-28.el7_4.1.x86_64.rpm

https://download.csdn.net/download/weixin_42903334/10901084    文档以及下载地址CSDN链接

安装步骤:

(1)将这个几rpm包放到任意目录下,进入到这个目录,执行命令  rpm -ivh net-snmp*.rpm --force

例如,将这几个rpm包放在 /root目录下,然后进入这个目录  cd /root,   然后执行命令

rpm -ivh net-snmp*.rpm --force      安装完成之后,这几个rpm包就可以删掉了。

(2)修改配置文件(/etc/snmp/snmpd.conf),大家可以参考http://www.linuxde.net/2013/02/12269.html对snmp进行符合自己要求的配置,如果你嫌麻烦,可以直接用我配置好的snmpd.conf覆盖过去,基本能满足我们日常开发需求,步骤就是把压缩包里的snmpd.conf复制到/etc/snmp/snmpd.conf目录下,覆盖。

(3)最后启动服务,执行命令 systemctl start snmpd

(4)测试验证SNMP配置的正确性,执行命令

snmpwalk -v 1 192.168.0.200 -c public system

(注意,192.168.0.200更改为自己安装snmp服务的那台机器地址)

表明安装成功!!!

二、mongodb配置,顺序一定不能错

创建相关目录

添加mongodb环境变量

echo 'export PATH=/usr/local/mongodb/bin:$PATH'  >>  /etc/profile

source /etc/profile

[root@roothost-10-90-2-105 mongodb4.0.2]# mkdir data logs # 数据目录和日志目录

新建配置文件(两个节点的配置一下只有存数据的目录不同)

[root@roothost-10-90-2-105 mongodb4.0.2]# cat mongodb.conf

logpath=/usr/local/mongodb/logs/mongod.log   # 日志路径

logappend=true # 是否日志追加

fork=true # 后台启动

port=27017 # 端口

dbpath=/usr/local/mongodb/data/mongodb_bak/mongodb_bak_now # 数据目录

pidfilepath=/usr/local/mongodb/data/mongod.pid # pid

oplogSize=4096   # 设置oplog的大小

maxConns=640000 # 最大同时连接数 默认2000

directoryperdb=true # 设置每个数据库将被保存在一个单独的目录

bind_ip=0.0.0.0 # 监听  0.0.0.0 代表可以被访问连接

启动主节点

[root@roothost-10-90-2-105 mongodb4.0.2]#./bin/mongod -f mongodb.conf  # 主

进入主节点并新建root账号

[root@roothost-10-90-2-105 mongodb4.0.2]#mongo

MongoDB shell version v4.0.2

connecting to: mongodb://127.0.0.1:27017

MongoDB server version: 4.0.2> db.createUser({ user: 'root', pwd: 'test123', roles: [ { role:"root", db: "admin" } ] });

Successfully added user: {

"user" : "root",

"roles" : [

{

"role" : "root",

"db" : "admin"

}

]}>

停止主节点

[root@roothost-10-90-2-105 mongodb4.0.2]#./bin/mongod -f mongodb.conf  # 主

启用密码认证和keyfile证书验证

把主节点上生成的energy-rc.key传到从节点上,配置同主节点一样(记得对传过去的文件也得同样赋权限)

# 生成keyfiles文件[root@roothost-10-90-2-105 mongodb4.0.2]#openssl rand -base64 756 > energy-rc.key

# 设置只读权限[root@roothost-10-90-2-105 mongodb4.0.2]#chmod 400 energy-rc.key

# 配置文件中添加如下[root@roothost-10-90-2-105 mongodb4.0.2]#cat   mongodb.conf

auth=true #打开认证

keyFile=/root/mongodb4.0.2/energy-rc.key  #启用key验证

replSet=rs0

启动主从节点

[root@roothost-10-90-2-105 mongodb4.0.2]#./bin/mongod -f mongodb.conf  # 主[root@server mongodb4.0.2]#./bin/mongod -f mongodb.conf # 从

进入主节点添加副本集节点

2018-09-05T13:26:02.859+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'

about to fork child process, waiting until server is ready for connections.

forked process: 6290

child process started successfully, parent exiting[root@roothost-10-90-2-105 mongodb4.0.2]# ./bin/mongo

MongoDB shell version v4.0.2

connecting to: mongodb://127.0.0.1:27017

MongoDB server version: 4.0.2

> use admin

switched to db admin> db.auth('root','test123')1

# 查看复制集状态> rs.status(){

"ok" : 0,

"errmsg" : "no replset config has been received",

"code" : 94,

"codeName" : "NotYetInitialized"}

# 定义配置信息,把两台节点加进来> var cfg={_id:'rs0',members:[{_id:0,host:'10.90.2.105:27017'},{_id:1,host:'10.90.2.103:27017'}]}

# 初始化复制集> rs.initiate(cfg){ "ok" : 1 }

# 查看配置信息

rs0:SECONDARY> rs.conf(){

"_id" : "rs0",

"version" : 1,

"protocolVersion" : NumberLong(1),

"writeConcernMajorityJournalDefault" : true,

"members" : [

{

"_id" : 0,

"host" : "10.90.2.105:27017",

"arbiterOnly" : false,

"buildIndexes" : true,

"hidden" : false,

"priority" : 1,

"tags" : {

},

"slaveDelay" : NumberLong(0),

"votes" : 1

},

{

"_id" : 1,

"host" : "10.90.2.103:27017",

"arbiterOnly" : false,

"buildIndexes" : true,

"hidden" : false,

"priority" : 1,

"tags" : {

},

"slaveDelay" : NumberLong(0),

"votes" : 1

}

],

"settings" : {

"chainingAllowed" : true,

"heartbeatIntervalMillis" : 2000,

"heartbeatTimeoutSecs" : 10,

"electionTimeoutMillis" : 10000,

"catchUpTimeoutMillis" : -1,

"catchUpTakeoverDelayMillis" : 30000,

"getLastErrorModes" : {

},

"getLastErrorDefaults" : {

"w" : 1,

"wtimeout" : 0

},

"replicaSetId" : ObjectId("5b8f65bd5eb3d94f12e22e96")

}}

rs0:SECONDARY> rs.status(){

"set" : "rs0",

"date" : ISODate("2018-09-05T05:13:09.326Z"),

"myState" : 2,

"term" : NumberLong(0),

"syncingTo" : "",

"syncSourceHost" : "",

"syncSourceId" : -1,

"heartbeatIntervalMillis" : NumberLong(2000),

"optimes" : {

"lastCommittedOpTime" : {

"ts" : Timestamp(0, 0),

"t" : NumberLong(-1)

},

"appliedOpTime" : {

"ts" : Timestamp(1536124349, 1),

"t" : NumberLong(-1)

},

"durableOpTime" : {

"ts" : Timestamp(1536124349, 1),

"t" : NumberLong(-1)

}

},

"lastStableCheckpointTimestamp" : Timestamp(0, 0),

"members" : [

{

"_id" : 0,

"name" : "10.90.2.105:27017",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 191,

"optime" : {

"ts" : Timestamp(1536124349, 1),

"t" : NumberLong(-1)

},

"optimeDate" : ISODate("2018-09-05T05:12:29Z"),

"syncingTo" : "",

"syncSourceHost" : "",

"syncSourceId" : -1,

"infoMessage" : "could not find member to sync from",

"configVersion" : 1,

"self" : true,

"lastHeartbeatMessage" : ""

},

{

"_id" : 1,

"name" : "10.90.2.103:27017",

"health" : 1,

"state" : 0,

"stateStr" : "STARTUP",

"uptime" : 39,

"optime" : {

"ts" : Timestamp(0, 0),

"t" : NumberLong(-1)

},

"optimeDurable" : {

"ts" : Timestamp(0, 0),

"t" : NumberLong(-1)

},

"optimeDate" : ISODate("1970-01-01T00:00:00Z"),

"optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),

"lastHeartbeat" : ISODate("2018-09-05T05:13:09.261Z"),

"lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),

"pingMs" : NumberLong(0),

"lastHeartbeatMessage" : "",

"syncingTo" : "",

"syncSourceHost" : "",

"syncSourceId" : -1,

"infoMessage" : "",

"configVersion" : -2

}

],

"ok" : 1}

rs0:SECONDARY>

现在退出连接重新连接下主库,主节点的状态就变成PRIMARY

[root@roothost-10-90-2-105 mongodb4.0.2]#./bin/mongod --shutdown -f mongodb.conf  # 主[root@roothost-10-90-2-105 mongodb4.0.2]#./bin/mongod -f mongodb.conf # 主[root@roothost-10-90-2-105 mongodb4.0.2]# ./bin/mongo

MongoDB shell version v4.0.2

connecting to: mongodb://127.0.0.1:27017

MongoDB server version: 4.0.2

# 需要认证才能查看

rs0:SECONDARY> show dbs;2018-09-05T13:26:33.214+0800 E QUERY    [js] Error: listDatabases failed:{

"operationTime" : Timestamp(1536125178, 1),

"ok" : 0,

"errmsg" : "command listDatabases requires authentication",

"code" : 13,

"codeName" : "Unauthorized",

"$clusterTime" : {

"clusterTime" : Timestamp(1536125178, 1),

"signature" : {

"hash" : BinData(0,"IszQmtleFm3uVO+Uc8luktG9uYM="),

"keyId" : NumberLong("6597607397777211393")

}

}} :

_getErrorWithCode@src/mongo/shell/utils.js:25:13

Mongo.prototype.getDBs@src/mongo/shell/mongo.js:67:1

shellHelper.show@src/mongo/shell/utils.js:876:19

shellHelper@src/mongo/shell/utils.js:766:15

@(shellhelp2):1:1

# 认证

rs0:PRIMARY> use admin

switched to db admin

rs0:PRIMARY> db.auth('root','test123')1

# 可以看到,当前节点为主了

rs0:PRIMARY> db.isMaster();{

"hosts" : [

"10.90.2.105:27017",

"10.90.2.103:27017"

],

"setName" : "rs0",

"setVersion" : 1,

"ismaster" : true,

"secondary" : false,

"primary" : "10.90.2.105:27017",

"me" : "10.90.2.105:27017",

"electionId" : ObjectId("7fffffff0000000000000001"),

"lastWrite" : {

"opTime" : {

"ts" : Timestamp(1536125327, 1),

"t" : NumberLong(1)

},

"lastWriteDate" : ISODate("2018-09-05T05:28:47Z"),

"majorityOpTime" : {

"ts" : Timestamp(1536125327, 1),

"t" : NumberLong(1)

},

"majorityWriteDate" : ISODate("2018-09-05T05:28:47Z")

},

"maxBsonObjectSize" : 16777216,

"maxMessageSizeBytes" : 48000000,

"maxWriteBatchSize" : 100000,

"localTime" : ISODate("2018-09-05T05:28:57.348Z"),

"logicalSessionTimeoutMinutes" : 30,

"minWireVersion" : 0,

"maxWireVersion" : 7,

"readOnly" : false,

"ok" : 1,

"operationTime" : Timestamp(1536125327, 1),

"$clusterTime" : {

"clusterTime" : Timestamp(1536125327, 1),

"signature" : {

"hash" : BinData(0,"DUnksVz3DkGjfXNiuFbVDPRjtgg="),

"keyId" : NumberLong("6597607397777211393")

}

}}

现在副本集主从状态已经建立了,接下来就测试下数据能不能正常同步

测试同步

在主上插入一条数据

rs0:PRIMARY> use pay

switched to db pay

rs0:PRIMARY> db.pay.insert({"_id":"1"})WriteResult({ "nInserted" : 1 })

rs0:PRIMARY>

然后在从节点上查看是否已同步

rs0:SECONDARY> use admin

switched to db admin

rs0:SECONDARY> db.auth('root','test123')

1

rs0:SECONDARY> show dbs;

2018-09-05T13:31:49.563+0800 E QUERY    [js] Error: listDatabases failed:{

"operationTime" : Timestamp(1536125517, 1),

"ok" : 0,

"errmsg" : "not master and slaveOk=false",

"code" : 13435,

"codeName" : "NotMasterNoSlaveOk",

"$clusterTime" : {

"clusterTime" : Timestamp(1536125517, 1),

"signature" : {

"hash" : BinData(0,"KIttQEB/e0mzlQvqPJzeLWZgREM="),

"keyId" : NumberLong("6597607397777211393")

}

}} :

_getErrorWithCode@src/mongo/shell/utils.js:25:13

Mongo.prototype.getDBs@src/mongo/shell/mongo.js:67:1

shellHelper.show@src/mongo/shell/utils.js:876:19

shellHelper@src/mongo/shell/utils.js:766:15

@(shellhelp2):1:1

# 默认因为SECONDARY是不允许读写的,如果非要解决,方法如下:

rs0:SECONDARY> db.getMongo().setSlaveOk();

# 可以看到数据已经同步过来了

rs0:SECONDARY> show dbs;

admin           0.000GB

config          0.000GB

local           0.000GB

pay             0.000GB

rs0:SECONDARY>use pay

rs0:SECONDARY> db.pay.find().count()

1

rs0:SECONDARY> db.pay.find(){ "_id" : "1" }

三、mongodb配置xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mongo="http://www.springframework.org/schema/data/mongo"
       xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd">

<mongo:mongo-client id="mongofs" replica-set="${mongodb.host}:${mongodb.port},${mongodb.host2}:${mongodb.port}" credentials="${mongodb.user}:${mongodb.pwd}@${mongodb.defaultDbName}">
        <mongo:client-options connections-per-host="8"
                              threads-allowed-to-block-for-connection-multiplier="4"
                              connect-timeout="1000"
                              read-preference="primaryPreferred"
                              max-wait-time="1500"
                              socket-keep-alive="true"
                              socket-timeout="1500"
                              write-concern="NORMAL"/>
    </mongo:mongo-client>
    <mongo:db-factory id="mongofsDbFactory" dbname="pay" mongo-ref="mongofs"/>
    <mongo:mapping-converter id="mongofsConverter" db-factory-ref="mongofsDbFactory"/>
    <bean id="gridFsTemplate" class="com.silverdata.smart.mongodb.gridfs.GenericGridFsTemplate">
        <constructor-arg ref="mongofsDbFactory"/>
        <constructor-arg ref="mongofsConverter"/>
    </bean>
    
</beans>

mongodb复制集部署文档的更多相关文章

  1. ​MongoDB复制集相关方法使用(五)

    这里我们把复制集中可用的方法都实验一遍,帮助我们更好地来理解复制集.提前说明这些方法的使用是基于Mongodb3.2版本来的,看这篇文章之前需要先看上一篇文章. 介绍一下复制集可用的相关方法 rs.h ...

  2. HP DL160 Gen9服务器集群部署文档

    HP DL160 Gen9服务器集群部署文档 硬件配置=======================================================Server        Memo ...

  3. 部署MongoDB复制集(副本集)

    环境 操作系统:Ubuntu 18.04 MongoDB: 4.0.3 服务器 首先部署3台服务器,1台主节点 + 2台从节点 3台服务器的内容ip分别是: 10.140.0.5 (主节点) 10.1 ...

  4. Redis集群部署文档(Ubuntu15.10系统)

    Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...

  5. redis多机集群部署文档

    redis多机集群部署文档(centos6.2) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下 ...

  6. 02 . MongoDB复制集,分片集,备份与恢复

    复制集 MongoDB复制集RS(ReplicationSet): 基本构成是1主2从的结构,自带互相监控投票机制(Raft(MongoDB)Paxos(mysql MGR 用的是变种)) 如果发生主 ...

  7. mongodb 复制集

    mongodb 复制集 复制集简介 Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写 ...

  8. Raft与MongoDB复制集协议比较

    在一文搞懂raft算法一文中,从raft论文出发,详细介绍了raft的工作流程以及对特殊情况的处理.但算法.协议这种偏抽象的东西,仅仅看论文还是比较难以掌握的,需要看看在工业界的具体实现.本文关注Mo ...

  9. yapi部署文档

    windows 下 yapi部署文档 安装nodejs 安装mongodb 安装yapi 介绍 随着 web 技术的发展,前后端分离成为越来越多互联网公司构建应用的方式.前后端分离的优势是一套 Api ...

随机推荐

  1. ASP.NET Core Middleware (转载)

    What is Middleware? Put simply, you use middleware components to compose the functionality of your A ...

  2. ansible批量修改用户密码

    实现批量修改目标主机多个用户密码: --- - hosts: testchanange passwd gather_facts: false tasks: - name: change you pas ...

  3. docker 容器不能访问宿主端口原因

    因为数据包到了eth0的 上的iptables 表,首先匹配PREROUTING 链,这个拒绝了来自docker0的流量,从而跳到input链,input没有放开服务端口,所以容器访问宿主端口失败;但 ...

  4. iOS原生分享功能

    iOS_系统原生分享 - CSDN博客 通过UIActivityViewController实现更多分享服务 - 简书 UIActivity - UIKit _ Apple Developer Doc ...

  5. 在express中HMR(合并express和webpack-dev-server)

    在学习react的时候,经常用create-react-app来创建web应用,然而写到后面总有连自己服务器和数据库的需求,create-react-app创建的是一个webpack-dev-serv ...

  6. 今天在Qt子界面中的Button,转到槽转不过去,报错Qt The class containing 'Ui::MainWindow' could not be found in...

    在网上查了原因,因为我在修改button的名字时,没选中button,选中了子界面对话框Dialog,然后修改了名字,又没有改回去,所以button转到槽报错. 参考网站: https://zhida ...

  7. jQuery.validate.js表单验证插件

    jQuery.validate.js表单验证插件的使用 效果: 代码: <!DOCTYPE html> <html lang="en"> <head& ...

  8. $.ajax(),$.get(),$.post()的区别,以及一些参数注意规则

    $.ajax()方法和$.get(),$.post()方法的对比 $.ajax()方法是最完整的写法,可以完成所有的ajax请求(包含get类型和post类型) $.get()和$.post()都是简 ...

  9. vs+qt编程相关

    vs+qt编程的那些事 以下以helloqt项目为例 文件构成 Form Files 窗体文件 /*.ui 界面文件 Generated Files 界面生成文件 /ui_helloqt.h 添加带界 ...

  10. 【Keil】Keil5-改变字的大小和颜色

    点击 Edit / Configuration 出现弹窗,选择Colors & Fonts 底下可以选择要改哪个部分,例如普通代码.数字.关键字.注释...等等,当然也可以改变背景颜色的,英文 ...