24
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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のアップデートの手順を踏めばよろし
24
31
0

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
24
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?