top of page
Writer's pictureidnecvenancastnest

Setup a MongoDB replica sharding set in seconds: Learn how to use mongos and config servers to creat



The connector configuration property mongodb.name serves as a logical name for the MongoDB replica set or sharded cluster. The connector uses the logical name in a number of ways: as the prefix for all topic names, and as a unique identifier when recording the oplog position of each replica set.




Setup a MongoDB replica sharding set in seconds




The comma-separated list of hostname and port pairs (in the form 'host' or 'host:port') of the MongoDB servers in the replica set. The list can contain a single hostname and port pair. If mongodb.members.auto.discover is set to false, then the host and port pair should be prefixed with the replica set name (e.g., rs0/localhost:27017).


Boolean value that specifies whether the addresses in 'mongodb.hosts' are seeds that should be used to discover all members of the cluster or replica set (true), or whether the address(es) in mongodb.hosts should be used as is (false). The default is true and should be used in all cases except where MongoDB is fronted by a proxy.


In this post I am going to walk through the different ways we have to deploy a MongoDB replica/sharding set test in a similar way. It is important to mention that this is not intended for production, but to be used for troubleshooting, learning or just playing around with replication.


This toolkit has been created by Fernando Ipar and Sveta Smirnova, and includes a set of scripts that allow us to deploy a testing environment for both sharding and replication configurations. The main difference is that you can specify what storage engine will be the default, something you cannot do with other to methods.


This is a test setup and the configuration was setup using IPs(not hostnames). Unfortunately, all host were down following a maintenance & all host IPs changed when we brought the nodes up. Obviously replica set(mongod), config server(mongod) and mongos didn't come up due to unreachable IP addresses.


Note that the metrics covered in this breakdown are common to both storage engines, with the exception of the average duration of background flushes per replica set (seconds) and max memory usage, which are unique to MMAPv1.


MongoDB ensures high availability thanks to its replication mechanisms, horizontal scalability allowed by sharding, and is currently the most widely adopted document store. It is used by companies such as Facebook, eBay, Foursquare, Squarespace, Expedia, and Electronic Arts.


MongoDB sharding works by introducing a router process, through which clients connect to the sharded cluster, and configuration servers, which store the cluster metadata, the location in the cluster of each document. When a client submits a query to the router process, it first refers to the config servers to obtain the locations of the documents, and then obtains the query results directly from the individual servers orreplica sets (shards). Sharding is carried out on a per collection basis.


Amazon DocumentDB will automatically detect a problem with your primary instance and begin routing your read/write traffic to an Amazon DocumentDB replica instance. On average, this failover will complete within 30 seconds. In addition, the read traffic that your Amazon DocumentDB replicas instances were serving will be briefly interrupted.


In the process of an election, first, one of the nodes will raise a flag requesting an election, and all the other nodes will vote to elect that node as the primary node. The average time for an election process to complete is 12 seconds, assuming that replica configuration settings are in their default values. A major factor that may affect the time for an election to complete is the network latency, and it can cause delays in getting your replica set back to operation with the new primary node.


Rails guarantees "read your own write" and will send your GET or HEAD request to thewriter if it's within the delay window. By default the delay is set to 2 seconds. Youshould change this based on your database infrastructure. Rails doesn't guarantee "reada recent write" for other users within the delay window and will send GET and HEAD requeststo the replicas unless they wrote recently.


The comma-separated list of hostname and port pairs (in the form 'host' or 'host:port') of the MongoDB servers in the replica set. The list can contain a single hostname and port pair. If mongodb.members.auto.discover is set to false, then the host and port pair should be prefixed with the replica set name (e.g., rs0/localhost:27017).


Specifies a connection string that the connector uses during the initial discovery of a MongoDB replica set.To use this option, you must set the value of mongodb.members.auto.discover to true.Do not set this property and the mongodb.hosts property at the same time.


The connector uses this connection string only during the initial replica set discovery process.During this discovery process, the connector ignores connection values that are specified in other properties (mongodb.user, mongodb.password, mongodb.authsource, SSL configuration properties, and so forth).After the discovery process completes, when the connector attempts to establish a direct connection to a primary replica set member, the connector then returns to using the standard connection properties,and it ignores values in mongodb.connection.string.However, if credential information is not present elsewhere in the configuration, the connector can extract credential information from the value of the connection string.For example, if the mongodb.user property is not set, but the connection string includes the MongoDB username, the connector reads the information from the string.


To setup the replica set the m version manager is used along with mtools. Once the replica set is reconfigured via the mongo shell, checking the logs for the rs3 node that should now be PRIMARY should show the results of the priority takeover:


Replication lagReplication lag is defined as the number of seconds the secondary node is behind the primary node in making a copy of the data. High replication lag indicates that the secondary node is not able to replicate data fast enough. There can be multiple reasons behind high replication lag - network latency, disk throughput, concurrency or just large write operations on your MongoDB database.


Indexing, sharding and replication are three of the most important tasks to perform on any database, as they ensure optimal querying and database performance. In this article, we saw how MongoDB facilitates these tasks and makes them as easy as possible for the administrators to take care of.


The comma-separated list of hostname and port pairs (in the form host or host:port) of the MongoDB servers in the replica set. The list can contain a single hostname and port pair. If mongodb.members.auto.discover is set to false, then the host and port pair should be prefixed with the replica set name (e.g., rs0/localhost:27017)


Boolean value that specifies whether the addresses in mongodb.hosts are seeds that should be used to discover all members of the cluster or replica set (true), or whether the address(es) in mongodb.hosts should be used as is (false). The default is true and should be used in all cases except where MongoDB is fronted by a proxy.


The MongoDB Operator provides an extensive API allowing instances to be configured in a native Kubernetes way. It provides features like authentication, TLS, replication, sharding, backup, and others.


Replication is the practice of keeping identical copies of data on multiple servers to keep applications running and data safe. There are two set-up designs within MongoDB: a Replica Set with Replication Cluster and a Replica Set with Arbiter. All replica set members send heartbeats (pings) to each other every two seconds. If a heartbeat does not return within ten seconds, the other servers mark the unresponsive server as inaccessible.


Add sc-mongodb::replicaset (instead of sc-mongodb::default) to the node's run_list. Also choose a name for yourreplicaset cluster and set the value of node['mongodb']['cluster_name'] for eachmember to this name.


The recipe will try to configure the replicaset with the instances already registered in your chef-server with the samenode['mongodb']['cluster_name'], to configure various machines with the replicaset you'll need to deactivate theautomatic configuration with node['mongodb']['auto_configure']['replicaset'] = false and enable that flag only on the lastinstance of the replicaset.


Now mongos will automatically enable sharding for the "test" and the "mydatabase"database. Also, the "addressbook" and the "calendar" collection will be sharded,with sharding key "name" resp. "date".In the context of a sharding cluster always keep in mind to use a single rolewhich is added to all members of the cluster to identify all member nodes.Also, shard names are important to distinguish the different shards.This is esp. important when you want to replicate shards.


The setup is not much different from the one described above. All you have to do is add thesc-mongodb::replicaset recipe to all shard nodes, and make sure that all shardnodes which should be in the same replicaset have the same shard name.


To setup MMS, simply set your keys innode['mongodb']['mms_agent']['api_key'] and then add thesc-mongodb::mms_monitoring_agent recipe to your run list. Your current keysshould be available at your MMS Settings page.


If using this recipe with replication and sharding, ensure that the node['mongodb']['key_file_content']is set. All nodes must have the same key file in order for the replica set to initialize successfullywhen authentication is required. For mongos instances, set node['mongodb']['mongos_create_admin'] totrue to force the creation of the admin user on mongos instances. 2ff7e9595c


0 views0 comments

Recent Posts

See All

Comments


bottom of page