mysql仲裁节点_mongodb主从仲裁节点配置

本教程详细介绍了在CentOS 6.9环境下,如何配置MongoDB的主节点、从节点和仲裁节点。包括系统时间同步、修改系统文件限制、开启防火墙端口、安装MongoDB、创建管理员账号、生成keyfile、初始化副本集和添加从节点及仲裁节点的步骤。
摘要由CSDN通过智能技术生成

环境介绍

系统:CentOS 6.9

设备3台:172.16.10.42(27020端口),172.16.10.90(27020端口),172.16.10.199(27020端口),如果没有足够设备也可部署同一台设备上面,只需要修改端口即可。

准备工作

同步系统时间:保证各个机器的时间一致,可使用/usr/sbin/ntpdate time.nist.gov 进行系统时间同步,在系统任务中添加新的任务 crontab -e

0 12 * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

配置同时允许打开的文件最大数

查看系统允许同时打开文件的最大数 :ulimit -a

查看系统允许的最大句柄文件数:cat /proc/sys/fs/file-max

修改允许最大打开文件数,修改之后会永久生效,在【/etc/security/limits.conf】中,增加下面的代码:

* soft nofile 65536

* hard nofile 65536

保证3台设备相互之间网络访问可达

防火墙打开27020端口

/sbin/iptables -I INPUT -p tcp --dport 27020 -j ACCEPT #开放端口

/etc/init.d/iptables save # 保存修改

service iptables restart # 重启防火墙,修改生效复制代码

准备安装

选择MongoDB存放位置,例如: /home/mongodb

使用cd 命令cd /home/mongodb 进入mongodb 目录,下载MongoDB 压缩包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.10.tgz

解压文件 tar -xzvf mongodb-linux-x86_64-rhel62-3.4.10.tgz 到当前目录下

创建数据存放文件夹 mkdir data,创建日志存放文件夹 mkdir log

分配机器172.16.10.42(主节点),172.16.10.90(从节点),172.16.10.199(arb仲裁节点)

安装MongoDB主节点

在mongdb 目录下新建mongod.conf文件,编辑如下内容

systemLog:

destination: file

path: /home/mongodb/log/mongod.log #日志存放位置

logAppend: true #以追加的形式写入日志

storage:

dbPath: /home/mongodb/data #数据存放地址

journal:

enabled: true

directoryPerDB: true #每个数据库单独一个目录

processManagement:

fork: true

pidFilePath: /home/mongodb/mongod.pid #进程文件存放位置

net:

port: 27020 #mongo 占用的端口号

setParameter:

failIndexKeyTooLong: false复制代码

启动mongdb服务 /home/mongodb/mongodb-linux-x86_64-rhel62-3.4.10/bin/mongod --config /home/mongodb/mongod.conf

控制台连接mongo /home/mongodb/mongodb-linux-x86_64-rhel62-3.4.10/bin/mongo 127.0.0.1:27020 ,必须指定端口号,因为默认的端口为27017

创建管理员帐号

use admin; #进入admin数据库,系统自带

db.createUser(

{

user: "admin",

pwd: "admin",

roles: [ "__system","backup","clusterAdmin","dbAdminAnyDatabase","readWriteAnyDatabase","userAdminAnyDatabase" ]

}

); #创建用户,并分配用户角色复制代码

查询上一步操作创建的用户 db.system.users.find({"user":"admin"})

查询结果如下:

关闭mongodb 服务 /home/mongodb/mongodb-linux-x86_64-rhel62-3.4.10/bin/mongod --config /home/mongodb/mongod.conf --shutdown

生成keyfile文件 openssl rand -base64 741 > /home/mongodb/mongodb.keyfile

修改主节点mongd.conf文件为如下内容

systemLog:

destination: file

path: /home/mongodb/log/mongod.log

logAppend: true

storage:

dbPath: /home/mongodb/data

journal:

enabled: true

directoryPerDB: true

processManagement:

fork: true

pidFilePath: /home/mongodb/mongod.pid

net:

port: 27020

setParameter:

failIndexKeyTooLong: false

security:

keyFile: /home/mongodb/mongodb.keyfile # 使用keyfile认证

authorization: enabled

replication:

replSetName: mongodb_set #名称可以自定义,但是必须保证主节点、从节点、仲裁节点统一复制代码

安装MongoDB从节点、仲裁节点

同理在172.16.10.90,172.16.10.199 /home/mongodb 目录下新建 data、log目录

拷贝主节点 (172.16.10.42) /home/mongodb 目录下的 mongodb.keyfile、mongod.conf文件以及 mongodb-linux-x86_64-rhel62-3.4.10 文件夹 到从节点已经仲裁节点的/home/mongodb 目录下

修改仲裁节点` mongod.conf`` 文件内容如下

systemLog:

destination: file

path: /home/mongodb/log/mongod.log

logAppend: true

storage:

dbPath: /home/mongodb/data

journal:

enabled: false # 仲裁节点本地不保存数据

directoryPerDB: true

processManagement:

fork: true

pidFilePath: /home/mongodb/mongod.pid

net:

port: 27020

setParameter:

failIndexKeyTooLong: false

security:

keyFile: /home/mongodb/mongodb.keyfile # 使用keyfile认证

authorization: enabled

replication:

replSetName: mongodb_set #名称可以自定义,但是必须保证主节点、从节点、仲裁节点统一复制代码

配置主节点、从节点、仲裁节点

分别在三台设备上执行 /home/mongodb/mongodb-linux-x86_64-rhel62-3.4.10/bin/mongod --config /home/mongodb/mongod.conf 启动mongodb服务

控制台连接主节点(172.16.10.42)mongo /home/mongodb/mongodb-linux-x86_64-rhel62-3.4.10/bin/mongo 127.0.0.1:27020 -u admin -p , 使用admin帐号密码登录mongodb

初始化副本集配置

use admin;

config={_id:"mongodb_set",members:[{_id:0,host:"172.16.10.42","priority":20}]}

rs.initiate(config);复制代码

确认返回的是{ "ok" : 1 }

上面config里面,是当前主节点对外的ip,即从节点以及仲裁节点能够访问到的ip

查看集群节点的状态:rs.status();

添加仲裁节点

rs.addArb("172.16.10.199:27020");

添加从节点

rs.add("172.16.10.90:27020");

查看集群配置rs.config();

显示结果如下

mongodb_set:PRIMARY> rs.config()

{

"_id" : "mongodb_set",

"version" : 4,

"protocolVersion" : NumberLong(1),

"members" : [

{

"_id" : 0,

"host" : "172.16.10.42:27020",

"arbiterOnly" : false,

"buildIndexes" : true,

"hidden" : false,

"priority" : 20,

"tags" : {

},

"slaveDelay" : NumberLong(0),

"votes" : 1

},

{

"_id" : 1,

"host" : "172.16.10.199:27020",

"arbiterOnly" : true,

"buildIndexes" : true,

"hidden" : false,

"priority" : 1,

"tags" : {

},

"slaveDelay" : NumberLong(0),

"votes" : 1

},

{

"_id" : 2,

"host" : "172.16.10.90:27020",

"arbiterOnly" : false,

"buildIndexes" : true,

"hidden" : false,

"priority" : 1,

"tags" : {

},

"slaveDelay" : NumberLong(0),

"votes" : 1

}

],

"settings" : {

"chainingAllowed" : true,

"heartbeatIntervalMillis" : 2000,

"heartbeatTimeoutSecs" : 10,

"electionTimeoutMillis" : 10000,

"catchUpTimeoutMillis" : 60000,

"getLastErrorModes" : {

},

"getLastErrorDefaults" : {

"w" : 1,

"wtimeout" : 0

},

"replicaSetId" : ObjectId("59f82d3d21b782e865dc270a")

}

}复制代码

修改从节点为只读节点

获取当前配置,修改之后重新写入配置

cfg = rs.conf();

cfg.members[2].priority=0

rs.reconfig(cfg);复制代码

修改从节点为永远不可能被选为主节点(非必须)

获取当前配置,修改之后重新写入配置

cfg = rs.conf();

cfg.members[2].votes=0

rs.reconfig(cfg);复制代码

所有配置到此结束

转载于:https://juejin.im/post/59f91decf265da43231a48bc

https://blog.csdn.net/weixin_33691817/article/details/91431611

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值