部署单节点的mongos

本文详细指导了在一台服务器上部署MongoDB单节点mongos、config服务器和shard服务器的过程,包括环境配置、安装步骤、副本集设置和分片操作等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 概要
本文档用于部署 单节点的mongos,一个节点的 config , 一个节点的 shard ,一个节点的mongos。

变量:
mongodb 版本号:{{mongodb-version}}

2 部署架构及资源列表
2.1 架构图

2.2 架构说明

  1. 单节点的mongos,一个节点的 config , 一个节点的 shard ,一个节点的mongos。分片集

2.3 服务器列表

IP服务描述
mongodb-01configsvr1 Primary端口开放: - 27019
mongodb-01shardsvr1 Primary端口开放: - 27018
mongodb-01mongos1 Primary端口开放: - 27017

3 安装 MongoDB
3.1 环境准备

mongodb-01:
在 linux bash 中执行以下命令:

ulimit -n 1024000
echo “* soft nofile 1024000” >> /etc/security/limits.conf
echo “* hard nofile 1024000” >> /etc/security/limits.conf
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
sed -i “s/enforcing/disabled/g” /etc/selinux/config
准备环境:首先,您需要在机器上配置主机名和修改内核参数。在/etc/hosts文件中,添加以下配置:

127.0.0.1 configsvr1
127.0.0.1 shardsvr1
127.0.0.1 mongos1
3.2 安装步骤

获取到 mongodb 安装包后,在服务器上按顺序执行以下命令:

configsvr1 :

  1. 将安装包解压到指定目录下:
    tar -zxvf mongodb-{{mongodb-version}}.xxx.tar.gz

  2. 调整软件目录,创建 mongodb 相关目录
    mkdir /data
    mv mongodb-{{mongodb-version}}/ /data/
    mkdir -p config/data config/log data

  3. 创建配置文件
    vim config/mongod.conf,粘贴以下内容后,保存

根据实际情况调整个别参数:
systemLog:
verbosity: 0
quiet: false
traceAllExceptions: false
destination: file
path: /data/mongos/mongodb-3.4.24-27019/config/log/mongod.log
logAppend: true
logRotate: rename

processManagement:
fork: true
pidFilePath: /data/mongos/mongodb-3.4.24-27019/config/mongod.pid

storage:
dbPath: /data/mongos/mongodb-3.4.24-27019/config/data
journal:
enabled: true
directoryPerDB: true
syncPeriodSecs: 60
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
journalCompressor: snappy
directoryForIndexes: false
collectionConfig:
blockCompressor: snappy
indexConfig:
prefixCompression: true

net:
bindIp: 0.0.0.0
port: 27019
maxIncomingConnections: 20000

replication:
oplogSizeMB: 10240
replSetName: configReplSet
4. 增加环境变量
echo “export PATH=$PATH:/data/mongodb-{{mongodb-version}}/bin” >> ~/.bash_profile

source ~/.bash_profile

  1. 启动 mongod
    mongod --configsvr --config /data/mongos/mongodb-3.4.24-27019/config/mongod.conf

  2. 配置副本集
    在命令行执行:mongo “mongodb://localhost:27019”

  3. 进入 mongo shell ,执行以下命令:
    rs.initiate()
    若执行失败,则可以这么执行:
    var cfg = {
    … “_id”: “tap”,
    … “members”: [
    … {
    … “_id”: 0,
    … “host”: “119.8.233.223:27019”,
    … “priority”: 1,
    … “votes”: 1
    … }
    … ]
    … };
    再执行:rs.initiate(cfg);
    use admin
    db.createUser(
    {
    user: “admin”,
    pwd: “password”,
    roles: [
    “root”
    ],
    passwordDigestor:“server”
    }
    )
    shardsvr1:

  4. 将安装包解压到指定目录下:
    tar -zxvf mongodb-{{mongodb-version}}.xxx.tar.gz

  5. 调整软件目录,创建 mongodb 相关目录
    mkdir /data
    mv mongodb-{{mongodb-version}}/ /data/
    mkdir -p config data/shard1

  6. 创建配置文件
    vim config/mongod.yml,粘贴以下内容后,保存

根据实际情况调整个别参数:
systemLog:
verbosity: 0
quiet: false
traceAllExceptions: false
destination: file
path: /data/mongos/mongodb-3.4.24-27018/data/shard1/mongod.log
logAppend: true
logRotate: rename

processManagement:
fork: true
pidFilePath: /data/mongos/mongodb-3.4.24-27018/data/shard1/mongod.pid

storage:
dbPath: /data/mongos/mongodb-3.4.24-27018/data/shard1
journal:
enabled: true
directoryPerDB: true
syncPeriodSecs: 60
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
journalCompressor: snappy
directoryForIndexes: false
collectionConfig:
blockCompressor: snappy
indexConfig:
prefixCompression: true

net:
bindIp: 0.0.0.0
port: 27018
maxIncomingConnections: 20000

replication:
oplogSizeMB: 10240
replSetName: shard1
4. 增加环境变量
echo “export PATH=$PATH:/data/mongodb-{{mongodb-version}}/bin” >> ~/.bash_profile

source ~/.bash_profile

  1. 启动 mongoshard
    ./mongod --shardsvr --config /data/mongos/mongodb-3.4.24-27018/config/mongod.yml

  2. 配置副本集
    在命令行执行:mongo “mongodb://localhost:27018”

  3. 进入 mongo shell ,执行以下命令:
    rs.initiate()
    若执行失败,则可以这么执行:
    var cfg = {
    … “_id”: “tap”,
    … “members”: [
    … {
    … “_id”: 0,
    … “host”: “119.8.233.223:27019”,
    … “priority”: 1,
    … “votes”: 1
    … }
    … ]
    … };
    再执行:rs.initiate(cfg);
    use admin
    db.createUser(
    {
    user: “admin”,
    pwd: “password”,
    roles: [
    “root”
    ],
    passwordDigestor:“server”
    }
    )

db.auth(‘admin’, ‘Gotapd8!’)
cfg = rs.conf()
cfg.members[0].host = “{{IP:27019}}”
rs.reconfig(cfg)
mongos1:
8. 将安装包解压到指定目录下:
tar -zxvf mongodb-{{mongodb-version}}.xxx.tar.gz

  1. 调整软件目录,创建 mongodb 相关目录
    mkdir /data
    mv mongodb-{{mongodb-version}}/ /data/
    mkdir -p config data/shard1

  2. 创建配置文件
    vim config/mongos.yml,粘贴以下内容后,保存

根据实际情况调整个别参数:
systemLog:
destination: file
path: /data/mongos/mongodb-3.4.24-27017/data/shard1/mongod.log
logAppend: true
net:
bindIp: 0.0.0.0
port: 27017
sharding:
configDB: “configReplSet/jack-test:27019”
11. 增加环境变量
echo “export PATH=$PATH:/data/mongodb-{{mongodb-version}}/bin” >> ~/.bash_profile

source ~/.bash_profile

  1. 启动 mongos
    后台运行
    nohup ./mongos --configdb “configReplSet/jack-test:27019” --port 27017 &

  2. 配置副本集
    ./mongo --port 27017

  3. 进入 mongo shell ,执行以下命令:
    rs.initiate()
    若执行失败,则可以这么执行:
    var cfg = {
    … “_id”: “tap”,
    … “members”: [
    … {
    … “_id”: 0,
    … “host”: “119.8.233.223:27019”,
    … “priority”: 1,
    … “votes”: 1
    … }
    … ]
    … };
    再执行:rs.initiate(cfg);
    use admin
    db.createUser(
    {
    user: “admin”,
    pwd: “password”,
    roles: [
    “root”
    ],
    passwordDigestor:“server”
    }
    )
    添加分片:
    sh.addShard(“shard1/hostname:27018”)
    插入一条测试数据:
    db.test_table_001.insert({name: “test”,ORDER_ID: 1})
    mongos创建新的集合,并创建分片键
    db.createCollection(“test_table_001”) ;
    sh.shardCollection(“test.test_table_001”, { ORDER_ID: 1 }) ;
    db.test_table_001.createIndex({ ORDER_ID: 1 },{ background: true });

  4. 杀掉 mongo进程
    db.shutdownServer()

  5. 创建证书
    mkdir -p /etc/mongo
    openssl rand -base64 745 > /etc/mongo/mongodb-keyfile
    chmod 600 /etc/mongo/mongodb-keyfile

<think>好的,用户想了解mongosMongoDB中的作用和使用方法。首先,我需要回忆一下MongoDB的分片集群结构。MongoDB通过分片来实现横向扩展,而mongos在这里扮演的是路由的角色,负责将客户端的请求路由到对应的分片上。 根据引用[2],MongoDB的auto-sharding功能是通过mongos自动管理分片集群,将数据分布在各个节点上。这说明mongos是分片集群的核心组件之一,处理查询路由和数据定位。 接下来,用户可能想知道具体的使用方法。需要提到启动mongos的步骤,比如指定配置服务器的地址。引用[4]中的例子显示启动mongos时使用了--configdb参数,指向配置服务器。同时,引用[3]提到如果配置服务器信息过期,mongos可能启动失败,所以正确配置很重要。 还要说明mongos的主要功能,比如查询路由、负载均衡和透明分片管理。这些信息可以帮助用户理解为什么需要mongos以及它在集群中的重要性。 用户可能在使用过程中遇到问题,比如启动失败,这时候需要检查配置服务器是否可用,版本是否兼容等,如引用[3]所述。另外,安装方法方面,引用[5]提到了源码安装和官方文档的参考,可以建议用户查阅官方文档获取最新的安装指南。 最后,生成的相关问题需要覆盖作用、启动方法、常见问题、与配置服务器的关系以及分片集群搭建步骤,这样用户可以根据需要进一步探索。</think>### MongosMongoDB 中的作用与使用方法 #### 1. **Mongos 的作用** MongosMongoDB 分片集群(Sharded Cluster)的核心组件之一,充当**查询路由器(Query Router)**的角色,主要功能包括: - **查询路由**:将客户端请求路由到对应的分片(Shard),并聚合结果返回给客户端[^2]。 - **负载均衡**:根据分片键(Shard Key)自动分配数据,确保数据均匀分布在集群中。 - **透明分片管理**:对客户端隐藏分片细节,使其像操作单一数据库一样使用集群。 #### 2. **Mongos 的使用方法** ##### (1) **启动 Mongos 实例** 启动 Mongos 需指定**配置服务器(Config Server)**地址,例如: ```bash mongos --configdb config-server-host:port --port <mongos-port> ``` - `config-server-host:port`:配置服务器的地址和端口(如 `localhost:27019`)[^4]。 - `mongos-port`:Mongos 实例监听的端口(如 `27017`)。 ##### (2) **连接与操作** 通过 MongoDB Shell 或客户端驱动连接 Mongos: ```bash mongo --host <mongos-host> --port <mongos-port> ``` 后续操作(如插入、查询)与普通 MongoDB 实例一致,但数据会根据分片规则自动分配。 ##### (3) **分片集群配置** - 添加分片:通过 `sh.addShard("shard-host:port")` 将新分片加入集群。 - 定义分片键:使用 `sh.shardCollection("database.collection", { shard-key: 1 })` 指定分片规则。 #### 3. **常见问题与解决** - **启动失败**:若提示 `config server error`,检查配置服务器是否可用且版本兼容[^3]。 - **性能瓶颈**:可通过部署多个 Mongos 实例实现负载均衡,避免单点故障。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值