1. 程式人生 > >Mongodb 3.4配置搭建高可用叢集(2)

Mongodb 3.4配置搭建高可用叢集(2)

環境準備Centos6.5

三臺伺服器:

10.68.17.106、10.68.17.109、10.68.17.110

埠分配:

mongos:20000、config:21000、shard1:27001、shard2:27002、shard3:27003

分別為每臺機器建立mongos、config、shard1、shard2、shard3這些目錄,因為mongos不儲存資料,只需要建立日誌檔案目錄即可。

mkdir -p /usr/local/mongodb/mongos/log
mkdir -p /usr/local/mongodb/config/data
mkdir -p /usr/local/mongodb/config/log
mkdir -p /usr/local/mongodb/shard1/data
mkdir -p /usr/local/mongodb/shard1/log
mkdir -p /usr/local/mongodb/shard2/data
mkdir -p /usr/local/mongodb/shard2/log
mkdir -p /usr/local/mongodb/shard3/data
mkdir -p /usr/local/mongodb/shard3/log

1、config server配置伺服器

mongodb3.4以後版本要求配置伺服器也建立副本集,不然叢集搭建不成功。

新增配置檔案:

[[email protected] ~]# vim /usr/local/mongodb/conf/config.conf

## 配置檔案內容
pidfilepath = /usr/local/mongodb/config/log/configsrv.pid
dbpath = /usr/local/mongodb/config/data
logpath = /usr/local/mongodb/config/log/congigsrv.log
logappend = true
 
bind_ip = 0.0.0.0
port = 21000
fork = true
 
#declare this is a config db of a cluster;
configsvr = true

#副本集名稱
replSet=configs
 
#設定最大連線數
maxConns=20000

為三臺伺服器新增配置檔案後,分別啟動三臺伺服器的config server
[[email protected] ~]# mongod -f /usr/local/mongodb/conf/config.conf

登入任意一臺配置伺服器,初始化配置副本集
[[email protected] ~]# mongo --port 21000
#config變數
config = {
...    _id : "configs",
...     members : [
...         {_id : 0, host : "10.68.17.106:21000" },
...         {_id : 1, host : "10.68.17.109:21000" },
...         {_id : 2, host : "10.68.17.110:21000" }
...     ]
... }

#初始化副本集
rs.initiate(config)
其中,"_id":"configs"應與配置檔案中配置的replicaction.replSetName一致,"members"中的"host"為三個節點的ip和port。


2、配置分片副本集(三臺機器)
設定第一個分片副本集

配置檔案

[[email protected] ~]# /usr/local/mongodb/conf/shard1.conf
#配置檔案內容
#——————————————–
pidfilepath = /usr/local/mongodb/shard1/log/shard1.pid
dbpath = /usr/local/mongodb/shard1/data
logpath = /usr/local/mongodb/shard1/log/shard1.log
logappend = true

bind_ip = 0.0.0.0
port = 27001
fork = true
 
#開啟web監控
httpinterface=true
rest=true
 
#副本集名稱
replSet=shard1
 
#declare this is a shard db of a cluster;
shardsvr = true
 
#設定最大連線數
maxConns=20000
啟動三臺伺服器的shard1 server
[[email protected] ~]# mongod -f /usr/local/mongodb/conf/shard1.conf
登入任意一臺伺服器,初始化副本集
[[email protected] ~]# mongo --port 27001
#使用admin資料庫
use admin
#定義副本集配置,第三個節點的 "arbiterOnly":true 代表其為仲裁節點。
config = {
...    _id : "shard1",
...     members : [
...         {_id : 0, host : "10.68.17.106:27001" },
...         {_id : 1, host : "10.68.17.109:27001" },
...         {_id : 2, host : "10.68.17.110:27001" , arbiterOnly: true }
...     ]
... }
#初始化副本集配置
rs.initiate(config);

設定第二個分片副本集

配置檔案

[[email protected] ~]# vim /usr/local/mongodb/conf/shard2.conf
#配置檔案內容
#——————————————–
pidfilepath = /usr/local/mongodb/shard2/log/shard2.pid
dbpath = /usr/local/mongodb/shard2/data
logpath = /usr/local/mongodb/shard2/log/shard2.log
logappend = true

bind_ip = 0.0.0.0
port = 27002
fork = true
 
#開啟web監控
httpinterface=true
rest=true
 
#副本集名稱
replSet=shard2
 
#declare this is a shard db of a cluster;
shardsvr = true
 
#設定最大連線數
maxConns=20000
啟動三臺伺服器的shard2 server
[[email protected] ~]# mongod -f /usr/local/mongodb/conf/shard2.conf
登入任意一臺伺服器,初始化副本集
[[email protected] ~]# mongo --port 27002
#使用admin資料庫
use admin
#定義副本集配置
config = {
...    _id : "shard2",
...     members : [
...         {_id : 0, host : "10.68.17.106:27002"  , arbiterOnly: true },
...         {_id : 1, host : "10.68.17.109:27002" },
...         {_id : 2, host : "10.68.17.110:27002" }
...     ]
... }

#初始化副本集配置
rs.initiate(config);
設定第三個分片副本集

配置檔案

[[email protected] ~]# vim /usr/local/mongodb/conf/shard3.conf
#配置檔案內容
#——————————————–
pidfilepath = /usr/local/mongodb/shard3/log/shard3.pid
dbpath = /usr/local/mongodb/shard3/data
logpath = /usr/local/mongodb/shard3/log/shard3.log
logappend = true

bind_ip = 0.0.0.0
port = 27003
fork = true
 
#開啟web監控
httpinterface=true
rest=true
 
#副本集名稱
replSet=shard3
 
#declare this is a shard db of a cluster;
shardsvr = true
 
#設定最大連線數
maxConns=20000
啟動三臺伺服器的shard3 server
[[email protected] ~]# mongod -f /usr/local/mongodb/conf/shard3.conf
登入任意一臺伺服器,初始化副本集
[[email protected] ~]# mongo --port 27003
#使用admin資料庫
use admin
#定義副本集配置
config = {
...    _id : "shard3",
...     members : [
...         {_id : 0, host : "10.68.17.106:27003" },
...         {_id : 1, host : "10.68.17.109:27003" , arbiterOnly: true},
...         {_id : 2, host : "10.68.17.110:27003" }
...     ]
... }

#初始化副本集配置
rs.initiate(config);
3、配置路由伺服器mongos(三臺機器)

先啟動配置伺服器和分片伺服器,後啟動路由例項。

[[email protected] ~]# vim /usr/local/mongodb/conf/mongos.conf
#內容
pidfilepath = /usr/local/mongodb/mongos/log/mongos.pid
logpath = /usr/local/mongodb/mongos/log/mongos.log
logappend = true

bind_ip = 0.0.0.0
port = 20000
fork = true

#監聽的配置伺服器,只能有1個或者3個 configs為配置伺服器的副本集名字
configdb = configs/10.68.17.106:21000,10.68.17.109:21000,10.68.17.110:21000
 
#設定最大連線數
maxConns=20000

啟動三臺伺服器的mongos server
[[email protected] ~]# mongos -f /usr/local/mongodb/conf/mongos.conf

4、啟用分片

目前搭建了mongodb配置伺服器、路由伺服器、各個分片伺服器,不過應用程式連線到mongos路由伺服器並不能使用分片機制,還需要在程式裡設定分片配置,讓分片生效。

登入任意一臺mongos

[[email protected] ~]# mongo --port 20000
#使用admin資料庫
user  admin
#串聯路由伺服器與分配副本集
sh.addShard("shard1/10.68.17.106:27001,10.68.17.109:27001,10.68.17.110:27001")
sh.addShard("shard2/10.68.17.106:27002,10.68.17.109:27002,10.68.17.110:27002")
sh.addShard("shard3/10.68.17.106:27003,10.68.17.109:27003,10.68.17.110:27003")
#檢視叢集狀態
sh.status()
目前配置服務、路由服務、分片服務、副本集服務都已經串聯起來了,但是我們的目的是希望插入資料,資料能夠自動分片。連線在mongos上,準備讓指定的資料庫、指定的集合分片生效。
#指定testdb分片生效
db.runCommand( { enablesharding :"testdb"});
#指定資料庫裡需要分片的集合和片鍵
db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )














相關推薦

Mongodb 3.4配置搭建可用叢集2

環境準備Centos6.5 三臺伺服器: 10.68.17.106、10.68.17.109、10.68.17.110 埠分配: mongos:20000、config:21000、shard1:27001、shard2:27002、shard3:27003 分別為每臺機器

手動搭建Kubernetes1.8可用叢集5Node

一、準備 2、Node2,Node3上搭建Node,以下所有操作都在Node3上進行。Node2只需要修改kubelet配置就可以了 3、建立目錄,並分發證書 /etc/kubernetes/manifests    屬主kube 屬組kube-cert  許可權0

手動搭建Kubernetes1.8可用叢集6calico

一、準備 3、Node 3、建立目錄 /etc/cni/net.d/  /etc/calico/certs /opt/cni/bin/    許可權0755  屬主kube 二、配置所有節點 1、連結etcd證書 ln /etc/ssl/etcd/ssl/c

手動搭建Kubernetes1.8可用叢集7dnsmasq

接著上一篇 一、準備 andyshinn/dnsmasq:2.72 gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.1.1 2、建立資料夾 /etc/dnsmasq.d /etc/d

使用3臺虛擬機器搭建Hadoop HA叢集2

系列部落格目錄連結:Hadoop權威指南學習筆記:總章 基礎環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(1) HA環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(2) 本部分包含以下基本分內容 安裝部署zookeeper

【架構】Heartbeat可用服務2

agents 可用 分享 ont .com war 集群 需求 spa Heartbeat高可用服務 【13】Heartbeat發展情況及分支軟件介紹   有關Heartbeat分3個分支的說明     自2.1.4版本後,Linux-HA將Heartbeat分包

SQL Server中的可用2----檔案與檔案組

    在談到SQL Server的高可用性之前,我們首先要談一談單例項的高可用性。在單例項的高可用性中,不可忽略的就是檔案和檔案組的高可用性。SQL Server允許在某些檔案損壞或離線的情況下,允許資料庫依然保持部分線上,從而保證了高可用性。 檔案和檔案組     有關檔案和檔案組的基本概念,有很

手動搭建Kubernetes1.8可用叢集4Master

一、準備 2、Node1,Node2上搭建Master,以下所有操作都在Node1和2上進行 3、建立目錄,並分發證書 /etc/kubernetes/manifests    屬主kube 屬組kube-cert  許可權0700 /etc/kubernetes/

Mongodb3.4.7搭建可用集群

cto logs ica sta ready 部署 ... ima exiting 部署Mongodb高可用集群 準備 按照官方說明,至少需要3個config server,2個mongos,2個shard,每個shard至少2個副本,就是4個shard,共需要9個Mong

4--SpringCloud搭建可用的服務註冊中心 1--SpringCloud的服務註冊與發現Eureka 1--SpringCloud的服務註冊與發現Eureka 1--SpringCloud的服務註冊與發現Eureka

  我們已經介紹了1--SpringCloud的服務註冊與發現Eureka,其中,主要演示瞭如何構建和啟動服務註冊中心Eureka Server,以及如何將服務註冊到Eureka Server中,但是在之前的示例中,這個服務註冊中心是單點的,顯然這並不適合應用於線上生產環境,那麼下面在前文的基礎上,我們來看看

配置MySQL可用叢集MHA

配置MySQL高可用叢集+++++++++++++++++++主機角色 :客戶端 client50資料庫伺服器 mysql51 到 mysql55管理主機 mgm56VIP地址 192.168.4.100拓撲結構: client50 | mysql51主 |

4--SpringCloud搭建可用的服務註冊中心

  我們已經介紹了1--SpringCloud的服務註冊與發現Eureka,其中,主要演示瞭如何構建和啟動服務註冊中心Eureka Server,以及如何將服務註冊到Eureka Server中,但是在之前的示例中,這個服務註冊中心是單點的,顯然這並不適合應用於線上生產環境,那麼下面在前文的基礎上,我們來看看

CentOS 7下搭建可用叢集

本文以兩臺機器實現雙集熱備高可用叢集,主機名node1的IP為192.168.122.168 ,主機名node2的IP為192.168.122.169 。 一、安裝叢集軟體 必須軟體pcs,pacemaker,corosync,fence-agents-all,如果需要配置相關服務,也要安裝對

mongodb 3.4 配置sharding分片

摘抄mongodb官網: Sharding is a method for distributing data across multiplemachines. MongoDB uses sharding to support deployments with very

pacemaker + corosync 搭建可用叢集

一、什麼是高可用叢集         高可用叢集就是當某一個節點或伺服器發生故障時,另一個節點能夠自動且立即向外提供服務,即將有故障節點上的資源轉移到另一個節點上去,這樣另一個節點有了資源既可以向外提供服務。高可用叢集是用於單個節點發生故障時,能夠自動將資源、服務進行切換,

keepalived詳解 及 keepalived配置LVS可用叢集

keepalived詳解 及 keepalived配置LVS高可用負載均衡叢集        在前面《INUX叢集--均衡負載 LVS(一) LVS認知》等系列文章中我們全面認識了LVS,並手動進行了LVS的應用配置,我們知道所有使用者client端的請求都會經過LVS的

hadoop2.7.5搭建可用叢集

<!-- 指定副本數 --><property><name>dfs.replication</name><value>2</value></property><!-- 配置namenode和datanode的工作目錄-資

使用keepalived搭建可用叢集

開發十年,就只剩下這套架構體系了! >>>   

使用3臺虛擬機器搭建Hadoop HA叢集1

系列部落格目錄連結:Hadoop權威指南學習筆記:總章 基礎環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(1) HA環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(2) 工欲善其事,必先利其器,要學好大資料,就必須首先學會自己動手

從零搭建生產Hadoop叢集——關鍵伺服器雙網絡卡配置

一、概述 Hadoop叢集中,有許多伺服器部署著關鍵例項,如NameNode、ResourceManager、Zookeeper等,這些服務的穩定執行對叢集健康具有重要意義。雖然這些服務基本上都會做多例項高可用部署,但是若連線的是同個交換機,萬一交換機發生故障