CoreOS: Настройка сервисов в кластере CoreOS

Введение

Рекомендую ознакомиться со следующей инструкцией. Очень подробное описание как работать с CoreOS.

Подключение к кластеру

Подключаемся к любому узлу кластера, я создал пользователя nurmukhamed.

    slogin nurmukhamed@a.coreos.nurm.local

Создание конфигурационных файлов

Создайте следующие файлы

a.httpd

cat <<EOF > a-httpd.service

[Unit]
Description=A.HTTPD service
After=etcd.service
After=docker.service

[Service]
TimeoutStartSec=0
KillMode=none
ExecStartPre=-/usr/bin/docker kill a-httpd
ExecStartPre=-/usr/bin/docker rm a-httpd
ExecStartPre=/usr/bin/docker pull hub.nurm.local:5000/centos-test-httpd
ExecStartPre=/usr/bin/ip a add 192.168.254.207/25 dev vlan501
ExecStart=/usr/bin/docker run --name a-httpd -p 192.168.254.207:80:80 hub.nurm.local:5000/centos-test-httpd /usr/sbin/apachectl -D FOREGROUND
ExecStop=/usr/bin/docker kill a-httpd
ExecStop=/usr/bin/ip ad del 192.168.254.207/25 dev vlan501

[X-Fleet]
X-Conflicts=b-httpd.service, c-httpd.service, a-haproxy.service
EOF

b.httpd

cat <<EOF > b-httpd.service

[Unit]
Description=B.HTTPD service
After=etcd.service
After=docker.service

[Service]
TimeoutStartSec=0
KillMode=none
ExecStartPre=-/usr/bin/docker kill b-httpd
ExecStartPre=-/usr/bin/docker rm b-httpd
ExecStartPre=/usr/bin/docker pull hub.nurm.local:5000/centos-test-httpd
ExecStartPre=/usr/bin/ip a add 192.168.254.208/25 dev vlan501
ExecStart=/usr/bin/docker run --name b-httpd -p 192.168.254.208:80:80 hub.nurm.local:5000/centos-test-httpd /usr/sbin/apachectl -D FOREGROUND
ExecStop=/usr/bin/docker kill b-httpd
ExecStop=/usr/bin/ip ad del 192.168.254.208/25 dev vlan501

[X-Fleet]
X-Conflicts=a-httpd.service, c-httpd.service, a-haproxy.service
EOF

c.httpd

cat <<EOF > c-httpd.service

[Unit]
Description=C.HTTPD service
After=etcd.service
After=docker.service

[Service]
TimeoutStartSec=0
KillMode=none
ExecStartPre=-/usr/bin/docker kill c-httpd
ExecStartPre=-/usr/bin/docker rm c-httpd
ExecStartPre=/usr/bin/docker pull hub.nurm.local:5000/centos-test-httpd
ExecStartPre=/usr/bin/ip a add 192.168.254.209/25 dev vlan501
ExecStart=/usr/bin/docker run --name c-httpd -p 192.168.254.209:80:80 hub.nurm.local:5000/centos-test-httpd /usr/sbin/apachectl -D FOREGROUND
ExecStop=/usr/bin/docker kill c-httpd
ExecStop=/usr/bin/ip ad del 192.168.254.209/25 dev vlan501

[X-Fleet]
X-Conflicts=a-httpd.service, b-httpd.service, a-haproxy.service
EOF

a.haproxy

cat <<EOF > a-haproxy.service
[Unit]
Description=A.HAPROXY service
After=etcd.service
After=docker.service

[Service]
TimeoutStartSec=0
KillMode=none
ExecStartPre=-/usr/bin/docker kill a-haproxy
ExecStartPre=-/usr/bin/docker rm a-haproxy
ExecStartPre=/usr/bin/docker pull hub.nurm.local:5000/centos-test-haproxy
ExecStartPre=/usr/bin/ip a add 192.168.254.210/25 dev vlan501
ExecStart=/usr/bin/docker run --name a-haproxy -p 192.168.254.210:80:80 hub.nurm.local:5000/centos-test-haproxy /usr/sbin/haproxy -q -f /etc/haproxy/haproxy.cfg
ExecStop=/usr/bin/docker kill a-haproxy
ExecStop=/usr/bin/ip ad del 192.168.254.210/25 dev vlan501

[X-Fleet]
X-Conflicts=a-httpd.service, b-httpd.service, c-httpd.service
EOF

a.curl

cat <<EOF > a-curl.service
[Unit]
Description=A.CURL service
After=etcd.service
After=docker.service

[Service]
TimeoutStartSec=0
KillMode=none
ExecStartPre=-/usr/bin/docker kill a-curl
ExecStartPre=-/usr/bin/docker rm a-curl
ExecStartPre=/usr/bin/docker pull hub.nurm.local:5000/centos-test-cu                                                                                                                                                             rl
ExecStart=/usr/bin/docker run --name a-curl hub.nurm.local:5000/cent                                                                                                                                                             os-test-curl /root/curl_loop.sh
ExecStop=/usr/bin/docker kill a-curl

EOF

b.curl

cat <<EOF > b-curl.service
[Unit]
Description=B.CURL service
After=etcd.service
After=docker.service

[Service]
TimeoutStartSec=0
KillMode=none
ExecStartPre=-/usr/bin/docker kill b-curl
ExecStartPre=-/usr/bin/docker rm b-curl
ExecStartPre=/usr/bin/docker pull hub.nurm.local:5000/centos-test-curl
ExecStart=/usr/bin/docker run --name b-curl hub.nurm.local:5000/centos-test-curl /root/curl_loop.sh
ExecStop=/usr/bin/docker kill b-curl

EOF

c.curl

cat <<EOF > c-curl.service
[Unit]
Description=C.CURL service
After=etcd.service
After=docker.service

[Service]
TimeoutStartSec=0
KillMode=none
ExecStartPre=-/usr/bin/docker kill c-curl
ExecStartPre=-/usr/bin/docker rm c-curl
ExecStartPre=/usr/bin/docker pull hub.nurm.local:5000/centos-test-curl
ExecStart=/usr/bin/docker run --name c-curl hub.nurm.local:5000/centos-test-curl /root/curl_loop.sh
ExecStop=/usr/bin/docker kill c-curl

EOF

Загрузка конфигурационных файлов

    fleetctl submit a-httpd.service b-httpd.service c-httpd.service
    fleetctl load a-httpd.service b-httpd.service c-httpd.service

    fleetctl submit a-haproxy.service
    fleetctl load a-haproxy.service

    fleetctl submit a-curl.service b-curl.service c-curl.service
    fleetctl load a-curl.service b-curl.service c-curl.service

Запуск контейнеров

    fleetctl start a-httpd.service b-httpd.service c-httpd.service
    fleetctl start a-haproxy.service
    fleetctl start a-curl.service b-curl.service c-curl.service

Проверка

    fleetctl list-unit-files
    fleetctl list-units

    curl http://a.haproxy.nurm.local/counter.php
    curl http://a.httpd.nurm.local/counter.php
    curl http://b.httpd.nurm.local/counter.php
    curl http://c.httpd.nurm.local/counter.php

Если нет ошибок, вебсервера должны выдать страницу, подобно этой

<p class="hits">Hits: 84<br \>Unique Visits: 4</p>
comments powered by Disqus