参考
[RDO]
(https://openstack.redhat.com/Main_Page)
[RDO:Neutron with existing external network]
(https://openstack.redhat.com/Neutron_with_existing_external_network)
[OPENSTACK MANUALS:Configure network node]
(http://docs.openstack.org/icehouse/install-guide/install/yum/content/neutron-ml2-network-node.html)
[OPENSTACK MANUALS:Configure compute node]
(http://docs.openstack.org/icehouse/install-guide/install/yum/content/neutron-ml2-compute-node.html)
[Red Hat Enterprise Linux OpenStack Platform : Editing a PackStack Answer File]
(https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/ch06s03s02.html)
構築環境
インストールするサーバー
OS | IPアドレス | メモリ | CPU | NIC |
---|---|---|---|---|
CentOS6.5 | 192.168.1.41 | 2GB | 2 | 1 |
public空間(物理環境)
名前 | ネットワーク | ゲートウェイ | フローティングIP(非DHCP空間) |
---|---|---|---|
public | 192.168.1.0/24 | 192.168.1.1 | 192.168.1.42~49 |
プライベート空間(仮想環境)
名前 | ネットワーク | ゲートウェイ | フローティングIP(非DHCP空間) |
---|---|---|---|
private | 192.168.111.0/24 | 192.168.111.1 | 192.168.111.2~254 |
必要パッケージのインストール
・時刻を合わせる
・アップデート
・RDOのリポジトリ追加
・openstack-packstackのインストール
yum install -y ntpdate && ntpdate ntp.nict.jp
>
yum update -y
>
yum install -y http://rdo.fedorapeople.org/openstack-icehouse/rdo-release-icehouse.rpm
>
yum install -y openstack-packstack
カーネルパラメーター修正
sed -i.org \
-e "s/^net.ipv4.ip_forward.*=.*0/net.ipv4.ip_forward = 1/" \
-e "s/^net.ipv4.conf.all.rp_filter.*=.*1/net.ipv4.conf.all.rp_filter = 0/" \
-e "s/^net.ipv4.conf.default.rp_filter.*=.*1/net.ipv4.conf.default.rp_filter = 0/" \
/etc/sysctl.conf
sysctl -p
アンサーファイル生成と編集
・アンサーファイル生成
packstack --gen-answer-file answer.txt
・パスワード変更
KEYSTONE_PASSWORD=password
>>
sed -i.org \
-e "s/^CONFIG_KEYSTONE_ADMIN_PW=.*/CONFIG_KEYSTONE_ADMIN_PW=${KEYSTONE_PASSWORD}/" \
-e "s/^CONFIG_KEYSTONE_DEMO_PW=.*/CONFIG_KEYSTONE_DEMO_PW=${KEYSTONE_PASSWORD}/" \
answer.txt
・プライベートインターフェースをloにする
sed -i \
-e "s/^CONFIG_NOVA_NETWORK_PRIVIF=eth1/CONFIG_NOVA_NETWORK_PRIVIF=lo/" \
-e "s/^CONFIG_NOVA_COMPUTE_PRIVIF=eth1/CONFIG_NOVA_COMPUTE_PRIVIF=lo/" \
answer.txt
・Cinderに割り当てられるディスクサイズの変更(任意)
VOLUMES_SIZE=50G
>>
sed -i \
-e "s/^CONFIG_CINDER_VOLUMES_SIZE=20G/CONFIG_CINDER_VOLUMES_SIZE=$VOLUMES_SIZE/" \
answer.txt
・KeystoneのトークンフォーマットUUIDに変更(任意)
sed -i \
-e "s/^CONFIG_KEYSTONE_TOKEN_FORMAT=PKI/CONFIG_KEYSTONE_TOKEN_FORMAT=UUID/" \
answer.txt
・Heatをインストール(任意)
sed -i \
-e "s/^CONFIG_HEAT_INSTALL=n/CONFIG_HEAT_INSTALL=y/" \
-e "s/^CONFIG_HEAT_CLOUDWATCH_INSTALL=n/CONFIG_HEAT_CLOUDWATCH_INSTALL=y/" \
-e "s/^CONFIG_HEAT_CFN_INSTALL=n/CONFIG_HEAT_CFN_INSTALL=y/" \
answer.txt
・デモはいらない(任意)
sed -i \
-e "s/^CONFIG_PROVISION_DEMO=y/CONFIG_PROVISION_DEMO=n/" \
answer.txt
・Nagiosはいらない(任意)
sed -i \
-e "s/^CONFIG_NAGIOS_INSTALL=y/CONFIG_NAGIOS_INSTALL=n/" \
answer.txt
インストール開始
packstack --answer-file answer.txt
Neutron設定追加
vi /etc/neutron/plugin.ini
・/etc/neutron/plugin.ini 最終行に追記
[ovs]
network_vlan_ranges = physnet1
bridge_mappings = physnet1:br-ex
libvirt_type設定
vi /etc/nova/nova.conf
・libvirt_type に kvmもしくはqemu を指定
[libvirt]
virt_type=qemu
NICの設定変更
・eth0 編集
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes
・br-ex 編集
vi /etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=192.168.1.41
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
ONBOOT=yes
再起動
reboot
仮想ネットワーク構築
source /root/keystonerc_admin
・publicネットワーク作成
neutron net-create public \
--router:external true
>
neutron subnet-create \
--name public_subnet \
--enable_dhcp=False \
--allocation-pool=start=192.168.1.42,end=192.168.1.49 \
--gateway=192.168.1.1 \
public \
192.168.1.0/24
・pvivateネットワーク作成
neutron net-create private \
--shared
>
neutron subnet-create \
--name private_subnet \
--enable_dhcp=True \
--allocation-pool=start=192.168.111.2,end=192.168.111.254 \
--gateway=192.168.111.1 \
private \
192.168.111.0/24
・仮想ルーター作成
neutron router-create router1
>
neutron router-gateway-set router1 public
>
neutron router-interface-add router1 private_subnet
デフォルト フレーバーの修正
・現在のフレーバー確認
・1番目のフレーバーを削除
・1番目に新しいフレーバーを作成
・フレーバー確認
nova flavor-list
>
nova flavor-delete 1
>
nova flavor-create m1.tiny 1 512 10 1
>
nova flavor-list
# nova flavor-create \
FLAVOR_NAME \
FLAVOR_ID \
RAM_IN_MB \
ROOT_DISK_IN_GB \
NUMBER_OF_VCPUS
デフォルト セキュリティグループの修正
・PING許可
neutron security-group-rule-create \
--protocol icmp \
--direction ingress default
>
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
・SSH許可
neutron security-group-rule-create \
--protocol tcp --port-range-min 22 \
--port-range-max 22 \
--direction ingress default
>
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
インスタンス イメージ作成
・インスタンス イメージ作成に必要なパッケージをインストール
yum install -y qemu-img virt-install
・qcow2形式のイメージディスク作成
IMAGE_NAME=CentOS6.5
>
qemu-img create -f qcow2 /var/lib/libvirt/images/$IMAGE_NAME.qcow2 10G
・CentOSイメージ作成
・ネットワークインストールするリポジトリURL指定
・KVM上での名前を指定
・virt-installでインストールする
REPOS=http://ftp.riken.jp/Linux/centos/6/os/x86_64/
>
IMAGE_NAME=CentOS6.5
>
virt-install \
--name $IMAGE_NAME \
--ram 512 \
--disk path=/var/lib/libvirt/images/$IMAGE_NAME.qcow2,format=qcow2 \
--vcpus=1 \
--os-type linux \
--os-variant=rhel6 \
--nographics \
--location="$REPOS" \
--extra-args='console=tty0 console=ttyS0,115200n8 serial'
・CentOSイメージ内で
rm /etc/udev/rules.d/70-persistent-net.rules
>>
ln -s /dev/null /etc/udev/rules.d/70-persistent-net.rules
>>
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=dhcp
・イメージファイルの圧縮
IMAGE_NAME=CentOS6.5
>
qemu-img convert -c -O qcow2 \
/var/lib/libvirt/images/$IMAGE_NAME.qcow2 \
/var/lib/libvirt/images/$IMAGE_NAME.new.qcow2
>
rm /var/lib/libvirt/images/$IMAGE_NAME.qcow2
>
mv /var/lib/libvirt/images/$IMAGE_NAME.new.qcow2 \
/var/lib/libvirt/images/$IMAGE_NAME.qcow2
インスタンス イメージ登録
IMAGE_NAME=CentOS6.5
glance image-create \
--name=$IMAGE_NAME \
--is-public=true \
--disk-format=qcow2 \
--container-format=bare < /var/lib/libvirt/images/$IMAGE_NAME.qcow2
キーペア作成
cd && nova keypair-add mykey > mykey && chmod 600 mykey
nova keypair-list
インスタンスの起動
IMAGE_NAME=CentOS6.5
INSTANCE_NAME=CentOS6.5-test
PRIVATE_NET_ID=`neutron net-list | awk '$4=="private"{print $2}'`
nova boot \
--flavor 1 \
--image $IMAGE_NAME \
--security_group default \
--nic net-id=$PRIVATE_NET_ID \
--key-name mykey \
$INSTANCE_NAME
フローティングIPの付与
・作成したインスタンスのデバイスIDを取得する
INSTANCE_NAME=CentOS6.5-test
>
DEVICE_ID=`nova list | awk -v INSTANCE_NAME=$INSTANCE_NAME '$4==INSTANCE_NAME{print $2}'`
>
echo $DEVICE_ID
・作成したインスタンスのポートIDを取得する
PORT_ID=`neutron port-list --device_id=$DEVICE_ID | awk '/ip_address/{print $2}'`
>
echo $PORT_ID
・フローティングIPの割出とフローティングIPのIDを取得する
FLOATINGIP_ID=`neutron floatingip-create public | awk '$2~/^id$/{print $4}'`
>
echo $FLOATINGIP_ID
・フローティングIPをサブネットに割り当てる
neutron floatingip-associate $FLOATINGIP_ID $PORT_ID
・確認
nova list --name $INSTANCE_NAME
neutron floatingip-list --id $FLOATINGIP_ID | awk '{print $6}'
作成したインスタンスにssh接続する
ssh -i mykey root@floating_ip_address