Worker Nodes

Set up Linux users and permissions

Make the expeca user password a sudoer. Add the following it to the end of the file:

$ sudo visudo
...
expeca    ALL = (ALL) NOPASSWD: ALL

Add controller's public key to ssh authorized keys

Install Dependencies

  • Install Docker (Diginal Ocean Docker installation guide for Ubuntu 20.04)

    We install version 20.10.22 of Docker. Use the following commands during the installation instead of sudo apt install docker-ce:

    sudo apt update
    sudo apt install apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
    sudo apt install docker-ce-cli=5:20.10.22~3-0~ubuntu-focal
    sudo apt install docker-ce-rootless-extras=5:20.10.22~3-0~ubuntu-focal
    sudo apt install docker-ce=5:20.10.22~3-0~ubuntu-focal
  • Check whether docker is installed properly or not

    sudo docker version
  • Install other dependencies:

    sudo apt update && sudo apt install -f -y python3 python3-venv python3-pip jq git
  • Install Docker-py:

    First we have to downgrade the requests and urllib3 python packages:

    sudo pip install requests==2.28.1
    sudo pip install urllib3==1.26.13

    Then install docker-py:

    sudo pip install docker
  • Install GO

    wget https://dl.google.com/go/go1.19.2.linux-amd64.tar.gz
    sudo tar -xvf go1.19.2.linux-amd64.tar.gz
    sudo mv go /usr/local 

    if you get “directory not empty”, run the go directory with following commands cd /usr/local and `rm -R go/”.

    Add the following lines to the .bashrc file using vim ~/.bashrc:

    GOROOT=/usr/local/go
    GOPATH=$HOME/Projects/Proj1
    PATH=$GOPATH/bin:$GOROOT/bin:$PATH

    To apply the new env vars, log out of the server and back in, or type the following:

    su - ${USER}

    Check whether go is installed properly or not

    go version

Configure performance

  • Enable jumbo frames with mtu set to 9000 on capable interfaces

  • Disable hyperthreading on BIOS settings or only temporary:

  • Disable power management states of CPU

  • Set CPU Governor to performance

  • Check:

Stop Ubuntu iscsi services

iscsd process uses configfs which is normally mounted at /sys/kernel/config to store discovered targets information, on centos/rhel type of systems this special file system gets mounted automatically, which is not the case on debian/ubuntu. Since iscsid container runs on every nova compute node, the following steps must be completed on every Ubuntu server targeted for nova compute role.

  • Add configfs module to /etc/modules

  • Rebuild initramfs using: update-initramfs -u command

  • Stop open-iscsi system service due to its conflicts with iscsid container.

  • Make sure configfs gets mounted during a server boot up process. There are multiple ways to accomplish it, one example:

Start PTP Daemons

Linux PTP is an implementation of Precision Time Protocol (PTP). On Ubuntu, LinuxPTP can be downloaded as installed as follows:

This will install two tools-- ptp4l and phc2sys.

  • To install ptp4l as a system service, edit '/usr/lib/systemd/system/ptp4l.service' as shown below:

    $OPTIONS is located at the following path at '/etc/sysconfig/ptp4l' with the following:

    The above method can be used to configure linuxptp as PTP slaves with multicast. In order to enable unicast for PTP slaves the following procedure should be followed.

    The steps to install ptp4l as a system service are the same as above.

    $OPTIONS is located at the following path at '/etc/sysconfig/ptp4l' with the following:

    The content for /etc/ptp4l.cfg are

    To start and stop the ptp4l service use:

    To enable pt4l to run after every reboot enable it using systemctl:

  • Similarly, to install phc2sys as a system service, edit '/usr/lib/systemd/system/phc2sys.service' as shown below:

    $OPTIONS is located at the following path at '/etc/sysconfig/phc2sys' with the following:

    To start and stop the phc2sys service:

    To enable phc2sys to run after every reboot enable it using systemctl:

    Finally, make sure NTP is not active on the machine.

Last updated