今回の内容
今回は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での操作が前提です。
-
名前とかは適時
-
インストールメディアはRancherOSのISOを指定。(ここから入手可能)
-
ホームサーバーの指定も適時
-
CPUとメモリも適時。メモリは最低でも1GiB必要です。
-
Diskはとりあえず30GBくらい。あとから増やせるしね。
しばらくするとVMがiso起動して、コンソールに牛が出てきます。可愛いよ牛
インストール作業
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の記述は不要です。
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しちゃうので気を付けてください。
無事インストールが終わると牛が出てきます。
eth0 のところにIPアドレスが表示されます。固定IPの場合はさっきymlに書いたIPアドレスと同じIPアドレスになるはずです。
rancherユーザで秘密鍵を使ってリモートログインしてみましょう。
Xen-toolsのインストール
xen-toolsというのがありまして、これを入れるとですね
- パフォーマンスの向上
- ライブマイグレーションが可能になる
- XenCenterからリソース使用状況をグラフで確認可能
- メモリを含んだスナップショットの作成が可能になる
素晴らしい!入れましょう。
普通の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 の起動を確認できます。
リソース状況もグラフ表示できるようになりました。
- 入れる前
- 入れた後
その他の設定
パスワード設定
ローカルコンソールからパスワードでログインできるようにします。
これをしないと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
以下のサイトを参考にしました。ありがてぇ