LoginSignup
31

More than 5 years have passed since last update.

【Docker】RancherOSで本格的な自宅サーバーを構築しよう(2) ~ rancher-serverをインストール ~

Last updated at Posted at 2016-06-07

rancher-serverをインストールしよう

rancher-docker.png

関連記事

rancherOSインストール

Rancher-Logo-Final-1.png

isoの場合

  • https://releases.rancher.com/os/latest/rancheros.iso をCDに焼く
  • 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の場合

2000px-AWS_Simple_Icons_AWS_Cloud.svg.png

  • 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の場合

963dd071-cdbb-35d7-666b-489ac950fbd3.png

    -- 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デーモンの再起動
              マシンの再起動
              どちらでも、コンテナが自動再起動してくれる
      

      --restart=alwaysについての考察

    • 数分後rancher-serverの8080にアクセスすると管理画面が現れる

Screen Shot 2016-06-07 at 00.02.59.png

HAProxy

        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のアップデート

  1. rancher/serverの停止

    $ docker stop <container_id_of_original_server>
    
  2. 一時的にvolumeに退避

    $ docker create --volumes-from <container_name_of_original_server> --name rancher-data rancher/server:<tag_of_previous_rancher_server>
    
  3. 新しいバージョンのrancher/serverをpull

    $ docker pull rancher/server:latest
    
  4. 退避しておいたvolumeからrancher/serverをrunする

    $ docker run -d --volumes-from rancher-data --restart=always -p 8080:8080 rancher/server:latest
    

その他

rancherサーバーが落ちてしまったら

  • rancherOSのアップデートの手順を踏めばよろし

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31