OpenNebulaでDRBD Manage Storage Driverを使ってみよう➀

#OpenNebula構成図#
<img width="474" alt="構成図.png" src="https://qiita-image-store.s3.amazonaws.com/0/169293/80e11fb3-181e-1ec2-0944-0407c7ab4e38.png">

#Frontendの構成#
【master1】
Centos7.4
10.30.0.100
primary
/dev/sda3  500G

【master2】
Centos7.4
10.30.0.101
secondary
/dev/sda3  500G

#Frontendの構築#

##前提条件##
selinuxはdisabledにします。
firewalldは適宜設定します。(この例ではfirewalldはoffにしています)

##hostsファイルの編集##

```ruby:master1,2共通
vi /etc/hosts
10.30.0.100  master1
10.30.0.101  master2
```
##ssh鍵交換##

```ruby:master1
ssh-keygen -t rsa
ssh-copy-id master1
ssh-copy-id master2
```
```ruby:master2
ssh-keygen -t rsa
ssh-copy-id master1
ssh-copy-id master2
```
authorized_keysにそれぞれの公開鍵を登録してください。

##パッケージのインストール##
http://ftp.kddilabs.jp/Linux/RPMS/elrepo/elrepo/el7/x86_64/RPMS/
から下記パッケージの最新版を利用すること

・drbd-utils
・kmod-drbd
・drbdmanage

```ruby:master1,2共通
yum groupinstall "Development Tools"
yum install -y wget
yum install -y libxslt pygobject2 help2man
yum install -y kernel-headers
yum install -y perl

curl -sO http://ftp.kddilabs.jp/Linux/RPMS/elrepo/elrepo/el7/x86_64/RPMS/kmod-drbd90-9.0.9-1.el7_4.elrepo.x86_64.rpm

curl -sO http://ftp.kddilabs.jp/Linux/RPMS/elrepo/elrepo/el7/x86_64/RPMS/drbd90-utils-9.3.1-1.el7.elrepo.x86_64.rpm

rpm -ivh *drbd*.rpm
```

```ruby:master1,2共通
cd /root

git clone --recursive https://github.com/LINBIT/drbdmanage.git

cd /root/drbdmanage/conf

cp drbdmanaged.cfg /etc/

make

make install
```

##LVMの設定##

```ruby:master1,2共通
yum install -y lvm2
pvcreate /dev/sda3
vgcreate drbdpool /dev/sda3
```
事前に/dev/sda3のファイルシステムをlvmに設定していると想定しています。

##DRBD9の設定##

```ruby:master1
drbdmanage init 10.30.0.100
drbdmanage add-node master2 10.30.0.101
drbdmanage add-resource mariadbdata
drbdmanage add-resource opennebuladata
drbdmanage add-resource opennebulaetc
drbdmanage add-volume mariadbdata 50G
drbdmanage add-volume opennebuladata 250G
drbdmanage add-volume opennebulaetc 10G
drbdmanage assign-resource mariadbdata master1
drbdmanage assign-resource mariadbdata master2
drbdmanage assign-resource opennebuladata master1
drbdmanage assign-resource opennebuladata master2
drbdmanage assign-resource opennebulaetc master1
drbdmanage assign-resource opennebulaetc master2
```

##DRBD9設定の確認##

```ruby:master1
drbdmanage v

+------------------------------------------------------------------------------+
| Name           | Vol ID |    Size | Minor |                          | State |
|------------------------------------------------------------------------------|
| mariadbdata    |      0 |  50 GiB |   100 |                          |    ok |
| opennebuladata |      0 | 250 GiB |   101 |                          |    ok |
| opennebulaetc  |      0 |  10 GiB |   102 |                          |    ok |
+------------------------------------------------------------------------------+
```

#ここからはmaster1の設定#

##手動でDRBDをマウントします##

```ruby:master1
mkdir /var/lib/mysql 
mkdir /var/lib/one
mkdir /etc/one
mount /dev/drbd100 /var/lib/mysql
mount /dev/drbd101 /var/lib/one
mount /dev/drbd102 /etc/one
```

##OpenNebulaレポジトリの設定##

```ruby:master1
vi /etc/yum.repos.d/opennebula.repo

[opennebula]
name=opennebula
baseurl=https://downloads.opennebula.org/repo/5.4/CentOS/7/x86_64
enabled=1
gpgkey=https://downloads.opennebula.org/repo/repo.key
gpgcheck=1
```

##OpenNebulaパッケージのインストール##

```ruby:master1
yum install epel-release

yum install opennebula-server opennebula-sunstone opennebula-ruby opennebula-gate opennebula-flow

/usr/share/one/install_gems
```

##MariaDBのインストール##

```ruby:master1
yum install mariadb mariadb-server
mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON opennebula.* TO oneadmin@localhost IDENTIFIED BY 'opennebula';
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
mysql> quit
```

##oned.confファイルの設定変更##

```ruby:master1
vi /etc/one/oned.conf

#DB = [ BACKEND = "sqlite" ]

# Sample configuration for MySQL
 DB = [ BACKEND = "mysql",
        SERVER  = "localhost",
        PORT    = 0,
        USER    = "oneadmin",
        PASSWD  = "opennebula",
        DB_NAME = "opennebula" ]
```

##Opennebula起動前の設定##

```ruby:master1
echo "oneadmin:opennebula" > /var/lib/one/.one/one_auth
```

##Opennebulaの起動##

```ruby:master1
systemctl start opennebula
systemctl start opennebula-sunstone
```

##Opennebula起動の確認##

```ruby:master1
oneuser show

USER 0 INFORMATION
ID              : 0
NAME            : oneadmin
GROUP           : oneadmin
PASSWORD        : 3bc15c8aae3e4124dd409035f32ea2fd6835efc9
AUTH_DRIVER     : core
ENABLED         : Yes
```
上記の様な表示でしたらOKです。下記の場合は設定が上手くいっていないので
やり直してください。

```ruby:master1
oneuser show

Failed to open TCP connection to localhost:2633 (Connection refused - connect(2) for "localhost" port 2633)
```
問題無ければ一度opennebulaをstopします。
その後、mountしているdrbdをunmountします。

##Opennebulaの停止##

```ruby:master1
systemctl stop opennebula-sunstone
systemctl stop opennebula
```

##MariaDBの停止##

```ruby:master1
systemctl stop mariadb.service
```

##DRBDのunmount##
```ruby:master1
unmount /dev/drbd100
unmount /dev/drbd101
unmount /dev/drbd102
```

#ここからはmaster2の設定#

##手動でDRBDをマウントします##

```ruby:master2
mkdir /var/lib/mysql 
mkdir /var/lib/one
mkdir /etc/one
mount /dev/drbd100 /var/lib/mysql
mount /dev/drbd101 /var/lib/one
mount /dev/drbd102 /etc/one
```

##OpenNebulaレポジトリの設定##

```ruby:master2
vi /etc/yum.repos.d/opennebula.repo

[opennebula]
name=opennebula
baseurl=https://downloads.opennebula.org/repo/5.4/CentOS/7/x86_64
enabled=1
gpgkey=https://downloads.opennebula.org/repo/repo.key
gpgcheck=1
```

##OpenNebulaパッケージのインストール##

```ruby:master2
yum install epel-release

yum install opennebula-server opennebula-sunstone opennebula-ruby opennebula-gate opennebula-flow

/usr/share/one/install_gems
```

##MariaDBのインストール##

```ruby:master2
yum install mariadb mariadb-server
mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON opennebula.* TO oneadmin@localhost IDENTIFIED BY 'opennebula';
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
mysql> quit
```

##oned.confファイルの設定変更##

```ruby:master2
vi /etc/one/oned.conf

#DB = [ BACKEND = "sqlite" ]

# Sample configuration for MySQL
 DB = [ BACKEND = "mysql",
        SERVER  = "localhost",
        PORT    = 0,
        USER    = "oneadmin",
        PASSWD  = "opennebula",
        DB_NAME = "opennebula" ]
```

##Opennebula起動前の設定##

```ruby:master2
echo "oneadmin:opennebula" > /var/lib/one/.one/one_auth
```

##Opennebulaの起動##

```ruby:master2
systemctl start opennebula
systemctl start opennebula-sunstone
```

##Opennebula起動の確認##

```ruby:master2
oneuser show

USER 0 INFORMATION
ID              : 0
NAME            : oneadmin
GROUP           : oneadmin
PASSWORD        : 3bc15c8aae3e4124dd409035f32ea2fd6835efc9
AUTH_DRIVER     : core
ENABLED         : Yes
```
上記の様な表示でしたらOKです。下記の場合は設定が上手くいっていないので
やり直してください。

```ruby:master2
oneuser show

Failed to open TCP connection to localhost:2633 (Connection refused - connect(2) for "localhost" port 2633)
```
問題無ければ一度opennebulaをstopします。
その後、mountしているdrbdをunmountします。

##Opennebulaの停止##

```ruby:master2
systemctl stop opennebula-sunstone
systemctl stop opennebula
```

##MariaDBの停止##

```ruby:master2
systemctl stop mariadb.service
```

##DRBDのunmount##
```ruby:master2
unmount /dev/drbd100
unmount /dev/drbd101
unmount /dev/drbd102
```

次のOpenNebulaでDRBD Manage Storage Driverを使ってみよう➁で
PacemakerとCorosyncの設定を行います。