Help us understand the problem. What is going on with this article?

RancherOS on XenServer

More than 1 year has passed since last update.

今回の内容

今回はXenServer上にVMをRancherOSで作成し、Xen-toolsなんかを入れるところを書きます。

背景

RancherServerをオンプレに構えることになったのですが、そんなに容量やパワーが必要ではないのでDockerが入った小さなVMでOKなんですよ。
RancherServer自体がコンテナなので軽量なコンテナ用OSということでRancherOSにしました。
本番でもRancherOSで行くつもりです。迷わず行けよ。行けばわかるさ。

でも大事な大事な管理サーバーなので、VMを動かす環境はちゃんと作ってホストの障害時には正常なホストにマイグレーションしてほしかったり、いちいちログインしなくてもVMの状況がパッと見られるようにしたいのです。

そこでXenServerですよ奥さん

XenServerはいいぞ

何がいいって?

  • 無償のOSSプロダクト。Citrixが有償サポートしてます。
  • 無償版と有償版の違いが殆どなく、以下の機能は無償版でも使えます。十分でしょ?
    • 複数サーバでクラスタ構成
    • XenCenterというGUIクライアントツールでVMやクラスタの管理
    • クラスタのローリングアップデート
    • クラスタ内でVMのマイグレーション
    • VMのHA構成
    • VMの定期スナップショット
    • etc

やってみよう

各バージョン

  • XenServer:7.1
  • RancherOS:1.0.0

VM作成

ここからはXenCenterでの操作が前提です。

  1. VMテンプレートは Other install media を選択
    2017-04-26_14h04_44.jpg

  2. 名前とかは適時

  3. インストールメディアはRancherOSのISOを指定。(ここから入手可能)
    2017-04-26_14h33_33.jpg

  4. ホームサーバーの指定も適時

  5. CPUとメモリも適時。メモリは最低でも1GiB必要です。
    2017-04-27_16h19_43.jpg

  6. Diskはとりあえず30GBくらい。あとから増やせるしね。

  7. NWは環境に合わせて
    2017-04-27_16h23_37.jpg

  8. そして内容を確認して「作成!」
    2017-04-27_16h23_45.jpg

しばらくするとVMがiso起動して、コンソールに牛が出てきます。可愛いよ牛

2017-04-27_16h27_55.jpg

インストール作業

isoでbootしただけなので、ここからがインストール作業です。

このままコンソールでやってもいいんだけど、XenCenterはコピペができないので、公開鍵の入力で死ねます。

リモートでログインできるようにしましょう。

Rancherユーザのパスワード設定(コンソールでの作業)

一時的にパスワードでログインできるようにします。

$ sudo passwd rancher

IPアドレスの設定(コンソールでの作業)

DHCPが有効な環境では不要です。固定IPの環境では以下のようにしてIPアドレスとデフォゲを登録してください。

$ sudo ip addr add 192.0.2.0/24 dev eth0
$ sudo route add default gw xxx.xxx.xxx.xxx

しばらくすると、リモートでSSH接続できるようになります。

yml作成

cloud-config.ymlというファイルを作成し、公開鍵の設定などを書いてインストールします。
色々と記述できるんですが、記述をミスると起動に失敗してdebugが面倒だし、OSに関する設定はインストール後でもできるので、慣れるまではあんまり書かない方がいいです。
慣れてきたらcloud-config.ymlで。環境の構成が1つのファイルで収まるので非常に便利です。

vi cloud-config.yml

以下が今回作ったymlです。例によって固定IPなのでその設定をしています。
hostnameやinterfacesの部分は環境に合わせて記述してください。

DHCP環境の場合は、networkの記述は不要です。

cloud-config.yml
ssh_authorized_keys:
 - ssh-rsa AAAA....

hostname: <適時>

rancher:
 network:
  dns:
   nameservers:
    - xxx.xxx.xxx.xxx
  interfaces:
   eth*:
    dhcp: false
   eth0:
    address: xxx.xxx.xxx.xxx/xx
    gateway: xxx.xxx.xxx.xxx
    mtu: 1500

RancherOSをDiskにインストール

以下のコマンドで実行

$ sudo ros install -c cloud-config.yml -d /dev/xvda

コマンド実行後に

Installing from rancher/os:v1.0.0
Continue [y/N]:

て聞かれるので y を押す。
しばらくすると

Continue with reboot [y/N]:

て聞かれるので、XenCenterでisoをイジェクトしてから y を押す。
イジェクトを忘れるとまたisoでbootしちゃうので気を付けてください。

無事インストールが終わると牛が出てきます。

2017-04-27_17h05_44.jpg

eth0 のところにIPアドレスが表示されます。固定IPの場合はさっきymlに書いたIPアドレスと同じIPアドレスになるはずです。

rancherユーザで秘密鍵を使ってリモートログインしてみましょう。

Xen-toolsのインストール

xen-toolsというのがありまして、これを入れるとですね

  1. パフォーマンスの向上
  2. ライブマイグレーションが可能になる
  3. XenCenterからリソース使用状況をグラフで確認可能
  4. メモリを含んだスナップショットの作成が可能になる

素晴らしい!入れましょう。

普通のOSだとXenCenterからisoをマウントしてinstall.sh実行すればおkなんですが、今回はちょっと違います。

詳しくはこちらをご覧ください。RacnherOSにxe-guest-utilitiesを入れます。

$ sudo ros service enable https://raw.githubusercontent.com/Klowner/rancher-xe-guest-utils/master/xe-guest-utils.yml

cloud-config.ymlに記述することもできます。その場合は以下のように記述してください。

#cloud-config.yml
rancher:
  services_include:
     https://raw.githubusercontent.com/Klowner/rancher-xe-guest-utils/master/xe-guest-utils.yml: true

今回はコマンドで入れました。

$ sudo ros service enable https://raw.githubusercontent.com/Klowner/rancher-xe-guest-utils/master/xe-guest-utils.yml
Pulling xe-guest-utils (klowner/rancher-xe-guest-utils:6.6.80)...
6.6.80: Pulling from klowner/rancher-xe-guest-utils

c52e3ed763ff: Pull complete
d50a1b57139d: Pull complete
6d0e66351103: Pull complete
fa25b714bd6c: Pull complete
Digest: sha256:86ebe9f68c62c53feaa63d3e97d0811c3bdebf3eac8778001e85d8632f346ea8
Status: Downloaded newer image for klowner/rancher-xe-guest-utils:6.6.80

この後再起動してください。

再起動後のコンソールで xe-guest-utils の起動を確認できます。

2017-04-27_17h32_54.jpg

リソース状況もグラフ表示できるようになりました。

  • 入れる前

2017-04-27_17h26_41.jpg

  • 入れた後

2017-04-27_17h33_55.jpg

その他の設定

パスワード設定

ローカルコンソールからパスワードでログインできるようにします。
これをしないとNW障害時にログインできなくなって詰みます。

cloud-config.ymlに以下を追記してください。

write_files:
  - path: /etc/ssh/sshd_config
    permissions: "0600"
    owner: root:root
    content: |
       Port 22
       ClientAliveInterval 180
       AuthorizedKeysFile .ssh/authorized_keys
       PasswordAuthentication no
       ChallengeResponseAuthentication no
       Subsystem       sftp    /usr/libexec/sftp-server
       UseDNS no
       PermitRootLogin no
       ServerKeyBits 2048
       AllowGroups docker

後はインストール完了後にsshで鍵を使ったログインをして。

$ sudo passwd rancher

で変更してください。

TimeZone

デフォルトだとUTCになっています

$ date
Thu Apr 27 08:39:09 UTC 2017

JSTに変えましょう

$ sudo ros config set rancher.services.console.environment.TZ "JST-9"

ymlに書く場合は

    rancher:
      services:
        console:
          environment:
            TZ: 'JST-9'

でおkです。

ntp

今回はnictと同期する設定です。環境に合わせて変更してください。

  write_files:
    - path: /etc/ntp.conf
      permissions: 0644
      content: |
          tinker panic 0
          default kod nomodify notrap nopeer noquery
          restrict -6 default kod nomodify notrap nopeer noquery

          restrict 127.0.0.1
          restrict -6 ::1

          restrict 133.243.238.163 mask 255.255.255.255 nomodify notrap noquery
          restrict 133.243.238.164 mask 255.255.255.255 nomodify notrap noquery
          restrict 133.243.238.243 mask 255.255.255.255 nomodify notrap noquery
          restrict 133.243.238.244 mask 255.255.255.255 nomodify notrap noquery

          server ntp.nict.jp

設定の確認とバックアップ

sudo ros config export

で現在の設定をyml形式で確認できます。

$ sudo ros config export
EXTRA_CMDLINE: /init
hostname: ranchermg01
rancher:
  autologin: tty1
  environment:
    EXTRA_CMDLINE: /init
  network:
    dns:
      nameservers:


これを保存しておけば、同じ環境があっさり作れます。

僕みたいにymlに慣れないと最初は苦労しますが、慣れればコマンドをカチカチやるよりよっぽど楽です。
ymlファイルが1個なのでバージョン管理も簡単だし。

これでRancherserverの土台が出来ました。ちゃんとライブマイグレーションもします。

そう、XenServerならね。

参考Link

以下のサイトを参考にしました。ありがてぇ

RancherJPの Q And A

Rancher Meetup Tokyo #1 RancherOS のymlを書いてみる

RancherOS rosコマンドを少し使ってみる [メモ]

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away