Uploaded image for project: 'Help-Desk'
  1. Help-Desk
  2. HELP-17728

FIWARE.Question.Tech.Connect Fiware IoT Agent to sharded MongoDB.

    Details

      Description

      Created question in FIWARE Q/A platform on 14-05-2021 at 07:05
      Please, ANSWER this question AT https://stackoverflow.com/questions/67530914/connect-fiware-iot-agent-to-sharded-mongodb

      Question:
      Connect Fiware IoT Agent to sharded MongoDB

      Description:
      I am using to following docker-compose file to setup my sharded MongoDB which has 3 shards, 3 config servers and 2 router instances:
      version: "3.5"
      services:

      mongorsn1:
      container_name: mongors1n1
      hostname: mongors1n1
      image: mongo
      command: mongod --shardsvr --replSet mongors1 --dbpath /data/db --port 27017
      ports:

      • 27017:27017
        expose:
      • "27017"
        environment:
        TERM: xterm
        volumes:
      • /etc/localtime:/etc/localtime:ro
      • /mongo_cluster/data1:/data/db

      mongors1n2:
      container_name: mongors1n2
      hostname: mongors1n2
      image: mongo
      command: mongod --shardsvr --replSet mongors1 --dbpath /data/db --port 27017
      ports:

      • 27027:27017
        expose:
      • "27017"
        environment:
        TERM: xterm
        volumes:
      • /etc/localtime:/etc/localtime:ro
      • /mongo_cluster/data2:/data/db

      mongors1n3:
      container_name: mongors1n3
      hostname: mongors1n3
      image: mongo
      command: mongod --shardsvr --replSet mongors1 --dbpath /data/db --port 27017
      ports:

      • 27037:27017
        expose:
      • "27017"
        environment:
        TERM: xterm
        volumes:
      • /etc/localtime:/etc/localtime:ro
      • /mongo_cluster/data3:/data/db

      mongocfg1:
      container_name: mongocfg1
      image: mongo
      command: mongod --configsvr --replSet mongors1conf --dbpath /data/db --port 27017
      environment:
      TERM: xterm
      expose:

      • "27017"
        volumes:
      • /etc/localtime:/etc/localtime:ro
      • /mongo_cluster/config1:/data/db

      mongocfg2:
      container_name: mongocfg2
      image: mongo
      command: mongod --configsvr --replSet mongors1conf --dbpath /data/db --port 27017
      environment:
      TERM: xterm
      expose:

      • "27017"
        volumes:
      • /etc/localtime:/etc/localtime:ro
      • /mongo_cluster/config2:/data/db

      mongocfg3:
      container_name: mongocfg3
      image: mongo
      command: mongod --configsvr --replSet mongors1conf --dbpath /data/db --port 27017
      environment:
      TERM: xterm
      expose:

      • "27017"
        volumes:
      • /etc/localtime:/etc/localtime:ro
      • /mongo_cluster/config3:/data/db

      mongos1:
      container_name: mongos1
      image: mongo
      hostname: mongos1
      depends_on:

      • mongocfg1
      • mongocfg2
        command: mongos --configdb mongors1conf/mongocfg1:27017,mongocfg2:27017,mongocfg3:27017 --port 27017
        ports:
      • 27019:27017
        expose:
      • "27017"
        volumes:
      • /etc/localtime:/etc/localtime:ro

      mongos2:
      container_name: mongos2
      image: mongo
      hostname: mongos2
      depends_on:

      • mongocfg1
      • mongocfg2
        command: mongos --configdb mongors1conf/mongocfg1:27017,mongocfg2:27017,mongocfg3:27017 --port 27017
        ports:
      • 27020:27017
        expose:
      • "27017"
        volumes:
      • /etc/localtime:/etc/localtime:ro

      As you can see it is up and running correctly.
      docker exec -it mongos1 bash -c "echo 'sh.status()' | mongo "

      MongoDB shell version v4.4.6
      connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
      Implicit session: session

      { "id" : UUID("f00e3ac7-e114-40b3-b7f8-0e5cf9c56e10") }

      MongoDB server version: 4.4.6
      — Sharding Status —
      sharding version:

      { "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, "clusterId" : ObjectId("609e21145937100b3f006e20") }

      shards:

      { "_id" : "mongors1", "host" : "mongors1/mongors1n1:27017,mongors1n2:27017,mongors1n3:27017", "state" : 1 }

      active mongoses:
      "4.4.6" : 2
      autosplit:
      Currently enabled: yes
      balancer:
      Currently enabled: yes
      Currently running: no
      Failed balancer rounds in last 5 attempts: 0
      Migration Results for the last 24 hours:
      No recent migrations
      databases:

      { "_id" : "config", "primary" : "config", "partitioned" : true }

      bye

      Now here is the docker-compose file I use to connect Orion and the IoT Agent to my MongoDB shards.
      version: "3.5"
      services:

      orion:
      image: atos/smbt/orion:2.5.2
      hostname: orion
      container_name: orion
      restart: unless-stopped
      ports:

      • "1026:1026"
        entrypoint:
      • /usr/bin/contextBroker
      • -fg
      • -multiservice
      • -ngsiv1Autocast
      • -corsOrigin
      • __ALL
        command: -dbhost mongors1n1:27017,mongors1n2:27027,mongors1n3:27037 -rplSet mongors1 -logLevel ERROR -noCache
        healthcheck:
        test: curl --fail -s http://orion:1026/version || exit 1
        networks:
      • fiware_mongo_sharding_default

      iot-agent:
      image: atos/smbt/iotagent-ul:1.15.0
      hostname: iot-agent
      container_name: iot-agent
      restart: unless-stopped
      expose:

      • "4041"
      • "7896"
        ports:
      • "4041:4041"
      • "7896:7896"
        environment:
      • IOTA_CB_HOST=orion
      • IOTA_CB_PORT=1026
      • IOTA_NORTH_PORT=4041
      • IOTA_REGISTRY_TYPE=mongodb
      • IOTA_LOG_LEVEL=ERROR
      • IOTA_TIMESTAMP=true
      • IOTA_CB_NGSI_VERSION=v2
      • IOTA_AUTOCAST=true
      • IOTA_MONGO_HOST=mongors1n1
      • IOTA_MONGO_PORT=27017
      • IOTA_MONGO_DB=iotagentul
      • IOTA_HTTP_PORT=7896
      • IOTA_PROVIDER_URL=http://iot-agent:4041
        networks:
      • fiware_mongo_sharding_default

      networks:
      fiware_mongo_sharding_default:
      external: true

      Orion is connected to MongoDB but with the IoT Agent I get the following error message.
      time=2021-05-14T07:51:51.086Z | lvl=ERROR | corr=28202651-30e1-48dc-88a9-53de603e7e6d | trans=28202651-30e1-48dc-88a9-53de603e7e6d | op=IoTAgentNGSI.DbConn | from=n/a | srv=n/a | subsrv=n/a | msg=MONGODB-001: Error trying to connect to MongoDB: MongoNetworkError: failed to connect to server [mongos1:27019] on first connect [MongoNetworkError: connect ECONNREFUSED 172.20.0.9:27019] | comp=IoTAgent

      I have tried different things such as:

      • IOTA_MONGO_HOST=mongos1
      • IOTA_MONGO_PORT=27019

      but to no avail unfortunately. Is there something I am doing wrong?
      Thanks in advance for your help.

        Activity

        Hide
        backlogmanager Backlog Manager added a comment -

        2021-05-15 05:31|CREATED monitor | # answers= 0, accepted answer= False

        Show
        backlogmanager Backlog Manager added a comment - 2021-05-15 05:31|CREATED monitor | # answers= 0, accepted answer= False
        Hide
        backlogmanager Backlog Manager added a comment -

        2021-09-15 05:31|UPDATED status: transition Answer| # answers= 1, accepted answer= True

        Show
        backlogmanager Backlog Manager added a comment - 2021-09-15 05:31|UPDATED status: transition Answer| # answers= 1, accepted answer= True
        Hide
        backlogmanager Backlog Manager added a comment -

        2021-09-16 05:31|UPDATED status: transition Finish| # answers= 1, accepted answer= True

        Show
        backlogmanager Backlog Manager added a comment - 2021-09-16 05:31|UPDATED status: transition Finish| # answers= 1, accepted answer= True

          People

          • Assignee:
            cpezuela Clara Pezuela
            Reporter:
            backlogmanager Backlog Manager
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: