rancher-serverをインストールしよう
関連記事
isoの場合
-
CD起動 (ID:rancher,Pass:rancher)
-
touch cloud-donfig.yml
-
cloud-config.yml の編集
#cloud-config ssh_authorized_keys: - ssh-rsa AAA...ZZZ example1@rancher - ssh-rsa BBB...ZZZ example2@rancher
メモ 基本的な設定はauthorized_keysを書くだけで良い。 tlsの設定をしようとして、公式docにあるようなsystem-dockerに変数をわたすやつをするとfileシステムが壊れてしまった(バグ?)ので注意 その時は、サーバーに1度centosを入れ直してパーティションを削除してからまた、rancherOSのインストールをしないと治らない現象がおきた
rancher: docker: tls_args: [--tlsverify, --tlscacert=ca.pem, --tlscert=server-cert.pem, --tlskey=server-key.pem, '-H=0.0.0.0:2376'] args: [daemon, --log-opt, max-size=25m, --log-opt, max-file=2, -s, overlay, -G, docker, -H, 'unix:///var/run/docker.sock', --userland-proxy=false, (--insecue-registry docker.oooo.com:5000) これを書こうとして壊れた、なくてもこわれた。]
-
sshの設定
基本的には何もさわってない RancherOSをインストールすればデフォルトの設定でpassログインが禁止されるから、上の鍵登録は絶対せんといかんばい。
-
インストール
$ mkfs.ext4 -L RANCHER_STATE /dev/sda $ sudo ros install -c cloud-config.yml -d /dev/sda
awsの場合
- ES2/ECSで作成
- VPCを作成してその中で新しいインスタンスを立てる
- rancheros-v0.4.3-0-amazon-ecs-optimized
- セキュリティグループ
80 - 80
22 - 22
8080 - 8080
5000 - 5000(private registry用)
- ECSで作成
ECSで作成してもいいが、private registryのときに少しハマったが、
ECS環境では、ECSクラスタに参加するためインスタンスの起動時にamazon/amazon-ecs-agentコンテナが実行されるので、その後でdockerサービスのみを再起動することが難しい場合があります。インスタンスの再起動も検討しましょう。
って、(http://dev.classmethod.jp/cloud/docker-registry-recipes/)
正直ec2のほうが作りやすかった。rancherにするならなおさら。
vagrantの場合
- https://github.com/rancher/os-vagrant.git をclone
- Vagrantfileを編集
-- 8行目$number_of_nodes = 1
++ 8行目$number_of_nodes = 3
# ノードの数に合わせて変えればよろし
#vm間で通信できるようにする
#ここは環境に合わせてブリッジにするならpublicで
-- web.vm.network :private_network, ip: ip
++ web.vm.network :public_network, ip: ip, virtualbox__intnet: "intnet"
$ vagrant up
メモ
upしたらvagrantのエラーで1個しか立ち上がらんけんノードの回数
vagrant upせんといかんっぽい
$ vagrant ssh {rancher-01<ここはvagrantfileで定義されてる名前01..03>}
管理画面を走らせる
- docker run
-
runには1GBの空き容量が必要らしい
$ docker run -d --restart=always -p 8080:8080 rancher/server
メモ --restart=alwaysをつけて起動すると、 dockerデーモンの再起動 マシンの再起動 どちらでも、コンテナが自動再起動してくれる
-
数分後rancher-serverの8080にアクセスすると管理画面が現れる
-
HAProxy
- RancherOSで本格的な自宅サーバーを構築しようで定義した構成にするためにproxyを設置
rancher-serverにしか80と443ポートを開けてないので
agent01とagent02にリクエストを振り分ける必要がある。
さらに、httpをhttpsでリダイレクトをかけるようにしている。
なお、ロードバランシング方法はroundrobinを採用
-
作業フォルダをつくる
$ cd $ mkdir haproxy $ cd haproxy $ touch Dockerfile $ touch proxy.cfg
-
haproxy.cfg
global maxconn 4192 defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 frontend http *:80 #redirect scheme https code 301 if !{ ssl_fc } # ssl を使うならリダイレクトをかける default_backend agent #オレオレ証明書などで代用もしくは書かない #frontend https # bind *:443 ssl crt ~/ssl/okamu.ro.pem # default_backend agent frontend registry *:5000 default_backend registry backend agent balance roundrobin server agent01 192.168.3.101:80 server agent02 192.168.3.102:80 backend registry balance roundrobin server agent01 192.168.3.101:5000 server agent02 192.168.3.102:5000
-
Dockerfile
FROM haproxy:1.5 ADD haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg #証明書があればコメントアウトを外す #RUN mkdir -p ~/ssl #ADD ssl/okamu.ro.pem ~/ssl/okamu.ro.pem EXPOSE 80 #EXPOSE 443 EXPOSE 5000
-
proxy run
docker build -t proxy . docker run -d --restart=always -p 80:80 -p 443:443 -p 5000:5000 proxy
##rancherOS(サーバー)のアップデートや管理
rancher/serverのアップデート
-
rancher/serverの停止
$ docker stop <container_id_of_original_server>
-
一時的にvolumeに退避
$ docker create --volumes-from <container_name_of_original_server> --name rancher-data rancher/server:<tag_of_previous_rancher_server>
-
新しいバージョンのrancher/serverをpull
$ docker pull rancher/server:latest
-
退避しておいたvolumeからrancher/serverをrunする
$ docker run -d --volumes-from rancher-data --restart=always -p 8080:8080 rancher/server:latest
##その他
###rancherサーバーが落ちてしまったら
- rancherOSのアップデートの手順を踏めばよろし