DCOS/Install

From DER's LLC
Revision as of 19:20, 2 June 2023 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

DCOS Installation Instructions

LAB Setup

  • Virtual Machine (2 CPU, 4G Memory, 50G HDD)
  • CentOS 7 Minimal
  • IP Address Assigned
  • Hostname Assigned
  • DNS Assigned

Master-01:

hostnamectl set-hostname Master-01.dersllc.com
sed -i 's/172.16.99.150/172.16.99.160/' /etc/sysconfig/network-scripts/ifcfg-ens192
yum -y install open-vm-tools
yum update -y

Slave-01:

hostnamectl set-hostname Slave-01.dersllc.com
sed -i 's/172.16.99.150/172.16.99.161/' /etc/sysconfig/network-scripts/ifcfg-ens192 
yum -y install open-vm-tools
yum update -y

Web-01:

hostnamectl set-hostname Web-01.dersllc.com
sed -i 's/172.16.99.150/172.16.99.170/' /etc/sysconfig/network-scripts/ifcfg-ens192
yum update -y
yum install -y httpd open-vm-tools
systemctl enable httpd
systemctl start httpd

Configuration Creation

  • SSH to Web-01

Install and configure Docker:

yum install -y docker wget
mkdir -p /etc/systemd/system/docker.service.d
cat > /etc/systemd/system/docker.service.d/http-proxy.conf << "EOF"
 [Service]
 Environment="HTTPS_PROXY=https://192.168.1.73:3128/"
 Environment="HTTP_PROXY=http://192.168.1.73:3128/"
 Environment="FTP_PROXY=ftp://192.168.1.73:3128/"
 Environment="NO_PROXY=localhost,127.0.0.0/8,dersllc.com"
EOF

cat <<EOF | sudo tee -a /etc/sysconfig/docker
 http_proxy="http://192.168.1.73:3128/"
 https_proxy="https://192.168.1.73:3128/"
 ftp_proxy="ftp://192.168.1.73:3128/"
 no_proxy="localhost,127.0.0.0/8,dersllc.com"
EOF

sudo sed -i '/\[Service\]/a EnvironmentFile=/etc/sysconfig/docker' /usr/lib/systemd/system/docker.service
systemctl daemon-reload
systemctl restart docker

Create GENCONF directory in Apache Directory:

cd /var/www/html
mkdir -p genconf

Download dcos_generate_config.sh file from DCOS.io:

wget https://downloads.dcos.io/dcos/stable/dcos_generate_config.sh

Create admin password hash:

./dcos_generate_config.sh --hash-password <PASSWORD>

Create Configuration File and copy in superuser password:

cat > genconf/config.yaml  << "EOF"
 bootstrap_url: http://web-01.dersllc.com/genconf/serve
 cluster_name: LAB
 superuser_username: admin
 superuser_password_hash: $6$rounds=656000$dOTsAHKtm/yBuOCF$iC9m16rE38eZ/iaDLoIgeFSPS9cb1NoBJGmEkHxghAvVkreyq9/Tl.CvYwUQDzot8iO6v6fVIWx7Nx0.yZjOA.
 exhibitor_storage_backend: static
 master_discovery: static
 ip_detect_public_filename: genconf/ip-detect
 master_list:
 - 172.16.99.160
 resolvers:
 - 172.16.87.5
 - 172.16.87.1
 security: 'disabled'
 use_proxy: 'true'
 http_proxy: http://192.168.1.73:3128
 https_proxy: https://192.168.1.73:3128
 no_proxy:
 - 'dersllc.com'
 enable_ipv6: 'false'
EOF

Create IP detection script:

cat > genconf/ip-detect << "EOF"
 #!/usr/bin/env bash
 set -o nounset -o errexit
 export PATH=/usr/sbin:/usr/bin:$PATH
 echo $(ip addr show ens192 | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)
EOF

Run Configuration Generator:

./dcos_generate_config.sh
systemctl restart httpd

Master / Slave Prerequisites

echo "proxy=http://192.168.1.73:3128" >> /etc/yum.conf                                                                           # ONLY REQUIRED FOR DERSLLC ENVIRONMENT
yum -y install ipset tar xz unzip curl docker docker-selinux chrony&> /dev/null
yum -y upgrade &> /dev/null
systemctl start chronyd
systemctl enable chronyd 
cat > /etc/chrony.conf  << "EOF"
 server 192.168.1.73
 server 0.vmware.pool.ntp.org
 server 1.vmware.pool.ntp.org
 server 2.vmware.pool.ntp.org
 server 3.vmware.pool.ntp.org
 allow 192.168.1.0/24
EOF

systemctl restart chronyd
mkdir -p /etc/systemd/system/docker.service.d
cat > /etc/systemd/system/docker.service.d/http-proxy.conf << "EOF"
 [Service]
 Environment="HTTPS_PROXY=https://192.168.1.73:3128/"
 Environment="HTTP_PROXY=http://192.168.1.73:3128/"
 Environment="FTP_PROXY=ftp://192.168.1.73:3128/"
 Environment="NO_PROXY=localhost,127.0.0.0/8,dersllc.com"
EOF

cat <<EOF | sudo tee -a /etc/sysconfig/docker
 http_proxy="http://192.168.1.73:3128/"
 https_proxy="https://192.168.1.73:3128/"
 ftp_proxy="ftp://192.168.1.73:3128/"
 no_proxy="localhost,127.0.0.0/8,dersllc.com"
EOF

sudo sed -i '/\[Service\]/a EnvironmentFile=/etc/sysconfig/docker' /usr/lib/systemd/system/docker.service
systemctl daemon-reload
systemctl restart docker
grep -q Restart=on-failure /usr/lib/systemd/system/docker.service && printf 'Restart function is already set in systemd script' || sed -i '/MountFlags=slave/aRestart=on-failure' /usr/lib/systemd/system/docker.service
systemctl daemon-reload  
systemctl enable docker.service
systemctl start docker.service
systemctl disable firewalld           # DCOS requires this firewall to be shut off. https://docs.mesosphere.com/1.7/administration/installing/custom/system-requirements/
systemctl stop firewalld
mkdir -p /var/{lib,log}/mesos
chown nobody /var/{lib,log}/mesos
touch /var/marathon.ip
chown /var/marathon.ip
groupadd nogroup -g 9999
groupadd docker

mkdir -p /tmp/dcos && cd /tmp/dcos
curl -s http://web-01.dersllc.com/genconf/serve/dcos_install.sh > dcos_install.sh                            # Change this to the Web Server hosting the Configuration

Master Installation

  • SSH to Master-01
# Creating installDCOS.sh script
echo "setenforce 0"  > /root/installDCOS.sh
echo "sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/sysconfig/selinux" >> /root/installDCOS.sh
echo "/bin/bash /tmp/dcos/dcos_install.sh master" >> /root/installDCOS.sh
echo "mkdir -p /var/log/mesos/archive" >> /root/installDCOS.sh
echo "echo 'ENABLE_CHECK_TIME=false' >> /opt/mesosphere/environment" >> /root/installDCOS.sh
echo "curl -fLsS --retry 20 -Y 100000 -y 60 https://downloads.dcos.io/binaries/cli/linux/x86-64/dcos-1.12/dcos -o dcos"  >> /root/installDCOS.sh
echo "mv dcos /usr/local/bin"  >> /root/installDCOS.sh
echo "chmod +x /usr/local/bin/dcos"  >> /root/installDCOS.sh
echo "dcos config set core.dcos_url http://Master-01.dersllc.com"  >> /root/installDCOS.sh                          # Replace the IP with the IP or DNS name of your Master host 
echo "sed -i 's/"clock_sync"\:/"clock_sync1"\:/' /opt/mesosphere/etc/dcos-diagnostics-runner-config.json"  >> /root/installDCOS.sh 
echo "sed -i '/"clock_sync"/d' /opt/mesosphere/etc/dcos-diagnostics-runner-config.json"  >> /root/installDCOS.sh 
echo "sed -i 's/"journald_dir_permissions",/"journald_dir_permissions"/' /opt/mesosphere/etc/dcos-diagnostics-runner-config.json"  >> /root/installDCOS.sh 
echo "sed -i 's/"clock_sync1"\:/"clock_sync"\:/' /opt/mesosphere/etc/dcos-diagnostics-runner-config.json"  >> /root/installDCOS.sh 
chmod 777 /root/installDCOS.sh

# Running the DCOS Installation Script (AS ROOT) 
/root/installDCOS.sh

Slave Installation

  • SSH to Slave-01
# Creating the Install Script
echo "setenforce 0"  > /root/installDCOS.sh
echo "sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/sysconfig/selinux" >> /root/installDCOS.sh
echo "/bin/bash /tmp/dcos/dcos_install.sh slave" >> /root/installDCOS.sh
echo "DCOS_CONFIG=\`grep -ir 'MESOS_HOSTNAME_LOOKUP=false' /opt/mesosphere/packages/dcos-config* | grep mesos-slave-common | cut -d ':' -f 1\`"  >> /root/installDCOS.sh
echo "for i in \$DCOS_CONFIG; do sed -i 's~MESOS_HOSTNAME_LOOKUP=.*~MESOS_HOSTNAME_LOOKUP=true~' \$i; done"  >> /root/installDCOS.sh
echo "rm -rf /var/lib/mesos/slave/meta/slaves/latest" >> /root/installDCOS.sh
echo "echo 'ENABLE_CHECK_TIME=false' >> /opt/mesosphere/environment" >> /root/installDCOS.sh
echo "sed -i 's/"clock_sync"\:/"clock_sync1"\:/' /opt/mesosphere/etc/dcos-diagnostics-runner-config.json"  >> /root/installDCOS.sh 
echo "sed -i '/"clock_sync"/d' /opt/mesosphere/etc/dcos-diagnostics-runner-config.json"  >> /root/installDCOS.sh 
echo "sed -i 's/"journald_dir_permissions",/"journald_dir_permissions"/' /opt/mesosphere/etc/dcos-diagnostics-runner-config.json"  >> /root/installDCOS.sh 
echo "sed -i 's/"clock_sync1"\:/"clock_sync"\:/' /opt/mesosphere/etc/dcos-diagnostics-runner-config.json"  >> /root/installDCOS.sh 
chmod 777 /root/installDCOS.sh

# Running the DCOS Installation Script (AS ROOT) 
/root/installDCOS.sh