Deploying VM

This section provides detailed instructions on how to deploy VM in the AWS.

Procedure

  1. Install TC-Redis.
    1. Update and install Redis.
      dnf update
      dnf install epel-release
      dnf install redis
    2. Start Redis.
      systemctl status redis
      systemctl start redis
    3. Enable remote access: Edit /etc/redis.conf, comment.
      cd /etc
      vi redis.conf
      comment #bind 127.0.0.1
      add bind 0.0.0.0
  2. Install Rabbitmq-Celery.
    1. Update and install Redis.
      dnf update
      dnf install epel-release
      dnf install redis
    2. Start Redis.
      systemctl status redis
      systemctl start redis
    3. Enable remote Redis access: Edit /etc/redis.conf, comment.
      cd /etc
      vi redis.conf
      comment #bind 127.0.0.1
      add bind 0.0.0.0
    4. Install dependencies: dnf install socat logrotate -y.
    5. Install Erlang.
      curl -LO -C - https://github.com/rabbitmq/erlang-rpm/releases/download/v26.2.5/erlang-26.2.5-1.el8.x86_64.rpm
      sudo dnf install ./erlang-26.2.5-1.el8.x86_64.rpm
    6. Add RabbitMQ repo and install.
      curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
      dnf install -y rabbitmq-server
    7. Enable and start RabbitMQ.
      sudo systemctl enable rabbitmq-server
      sudo systemctl start rabbitmq-server
    8. Enable management plugin: rabbitmq-plugins enable rabbitmq_management.
    9. Configure user/vhost/permissions: Create /etc/rabbitmq/definitions.json with user celery.
      vi definitions.json
      {
          "users": [
              {
                  "name": "celery",
                  "password_hash": "fa604aceeeaae520de8742410200d620edc4a6101fb2971cd706b4cc19141dce",
                  "hashing_algorithm": "rabbit_password_hashing_sha256",
                  "tags": "administrator"
              }
          ],
          "vhosts": [
              {
                  "name": "/"
              }
          ],
          "permissions": [
              {
                  "user": "celery",
                  "vhost": "/",
                  "configure": ".*",
                  "write": ".*",
                  "read": ".*"
              }
          ],
          "queues": [],
          "exchanges": [],
          "bindings": []
      }
    10. Point config to definitions file: Add load_definitions = /etc/rabbitmq/definitions.json in rabbitmq.conf.
  3. Install Rabbitmq-UI.
    1. Update and install Redis.
      dnf update
      dnf install epel-release
      dnf install redis
    2. Start Redis.
      systemctl status redis
      systemctl start redis
    3. Enable remote access: Edit /etc/redis.conf, comment.
      cd /etc
      vi redis.conf
      comment #bind 127.0.0.1
      add bind 0.0.0.0
    4. Install dependencies: dnf install socat logrotate -y.
    5. Install Erlang & RabbitMQ.
      curl -LO -C - https://github.com/rabbitmq/erlang-rpm/releases/download/v26.2.5/erlang-26.2.5-1.el8.x86_64.rpm
      sudo dnf install ./erlang-26.2.5-1.el8.x86_64.rpm
      curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
      dnf install -y rabbitmq-server
    6. Enable and start RabbitMQ.
      sudo systemctl enable rabbitmq-server
      sudo systemctl start rabbitmq-server
    7. Enable management plugin: rabbitmq-plugins enable rabbitmq_management.
    8. Create definitions file: /etc/rabbitmq/definitions.json with user celery.
      vi definitions.json
      {
          "users": [
              {
                  "name": "celery",
                  "password_hash": "fa604aceeeaae520de8742410200d620edc4a6101fb2971cd706b4cc19141dce",
                  "hashing_algorithm": "rabbit_password_hashing_sha256",
                  "tags": "administrator"
              }
          ],
          "vhosts": [
              {
                  "name": "/"
              }
          ],
          "permissions": [
              {
                  "user": "celery",
                  "vhost": "/",
                  "configure": ".*",
                  "write": ".*",
                  "read": ".*"
              }
          ],
          "queues": [],
          "exchanges": [],
          "bindings": []
      }
    9. Link config file: load_definitions = /etc/rabbitmq/definitions.json in rabbitmq.conf.
  4. Install the Scheduler.
    1. Create data dir and add jar.
      mkdir /data
                cd /data
                cp scheduler.jar
    2. Create config structure.
      cd /data
      		mkdir /config/scheduler
      		create application.properties
      		create kill-switch.properties
      		create log4j2.xml
      		create 'Report Error.html'
    3. Create TSDB config files.
      mkdir tsdb
        	inside tsdb -> create metricDumper.ini
      	               create metric.ini
    4. Set permissions.
      chown cdpservice:cdpservice /data
              chmod 777 /data/config
    5. Create symbolic link.
      mkdir -p /disk1
              ln -s /data/config /disk1