Uploaded image for project: 'C# Driver'
  1. C# Driver
  2. CSHARP-4102

Configure LB for local testing

    XMLWordPrintableJSON

Details

    • Icon: Task Task
    • Resolution: Unresolved
    • Icon: Unknown Unknown
    • None
    • None
    • None
    • None

    Description

      For local testings with RS LB should be configured similar to below where "config1", "repl1", "repl2", "repl2" just folders in the data folder.

      1. Create config server:

      mongod --configsvr --replSet test --dbpath config1 --bind_ip localhost --port 27217
      

      2. Initialize config server:

      rs.initiate( { _id: "test", configsvr: true, members: [ { _id: 0, host: "localhost:27217" } ] })
      

      mongo should be launched with "–port 27217" argument

      3. Create shard RSs:

      mongod --shardsvr --replSet testing  --dbpath repl1 --bind_ip localhost --port 27218 --setParameter enableTestCommands=true
      mongod --shardsvr --replSet testing  --dbpath repl2 --bind_ip localhost --port 27219 --setParameter enableTestCommands=true
      mongod --shardsvr --replSet testing  --dbpath repl3 --bind_ip localhost --port 27220 --setParameter enableTestCommands=true
      

      4. Initialize above rs:

      rs.initiate( { _id: "testing", members: [ { _id: 0, host: "localhost:27218" }, { _id: 1, host: "localhost:27219" }, { _id: 2, host: "localhost:27220" }] })
      

      mongo should be launched with "–port 27218" argument

      5. Create mongos on default 27017 port:

      mongos --configdb test/localhost:27217 --bind_ip localhost --setParameter enableTestCommands=1 --setParameter featureFlagLoadBalancer=true --setParameter loadBalancerPort=27050
      

      6. Initialize cluster on mongos:

      sh.addShard("testing/localhost:27218,localhost:27219,localhost:27220")
      sh.enableSharding("test")
      

      mongo should be launched with "–port 27017" argument.

      7. nginx config should be:

      #user  nobody;
      worker_processes  1;
      #error_log  logs/error.log;
      #error_log  logs/error.log  notice;
      #error_log  logs/error.log  info;
      # pid        nginx/logs/nginx.pid;
      events {
          worker_connections  1024;
      }
      stream {
          server {
              listen 8000;
              proxy_pass single_server_backend;
              proxy_protocol on;
          }
          server {
              listen 8001;
              proxy_pass multi_server_backend;
              proxy_protocol on;
          }
          upstream single_server_backend {
              server localhost:27050;
          }    
       
          upstream multi_server_backend {
              server localhost:27050;
          }    
      }
      

      starting nginx with: "start nginx" script.

      Additionally we need to update our LB test runner connection strings here. It should be set to:

      "MONGODB_URI" => "mongodb://localhost:8000?loadBalanced=true"
      "MONGODB_URI_WITH_MULTIPLE_MONGOSES" => "mongodb://localhost:8001?loadBalanced=true"

      The above creates sharded cluster with RS shards + config server and with single mongos.

      The problem is that our tests mostly require multi mongos. So this check will skip RS tests in LB tests suite. For most of cases it's enough just to disable this check, but it will lead to flakiness of some tests. We should investigate how to configure multi mongos nginx configuration. The config configuration should be similar to what we had previously and that is described in this PR

       

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            dmitry.lukyanov@mongodb.com Dmitry Lukyanov (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: