参考
RDO
RDO:Neutron with existing external network
OPENSTACK MANUALS:Configure network node
OPENSTACK MANUALS:Configure compute node
Red Hat Enterprise Linux OpenStack Platform : Editing a PackStack Answer File
構築環境
インストールするサーバー
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のインストール
shellyum 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
アンサーファイル生成と編集
・アンサーファイル生成
shellpackstack --gen-answer-file answer.txt
・パスワード変更
shellKEYSTONE_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にする
shellsed -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に割り当てられるディスクサイズの変更(任意)
shellVOLUMES_SIZE=50G sed -i \ -e "s/^CONFIG_CINDER_VOLUMES_SIZE=20G/CONFIG_CINDER_VOLUMES_SIZE=$VOLUMES_SIZE/" \ answer.txt・KeystoneのトークンフォーマットUUIDに変更(任意)
shellsed -i \ -e "s/^CONFIG_KEYSTONE_TOKEN_FORMAT=PKI/CONFIG_KEYSTONE_TOKEN_FORMAT=UUID/" \ answer.txt・Heatをインストール(任意)
shellsed -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・デモはいらない(任意)
shellsed -i \ -e "s/^CONFIG_PROVISION_DEMO=y/CONFIG_PROVISION_DEMO=n/" \ answer.txt・Nagiosはいらない(任意)
shellsed -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 最終行に追記
/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 を指定
/etc/nova/nova.conf[libvirt] virt_type=qemu
NICの設定変更
・eth0 編集
shellvi /etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0 TYPE=OVSPort DEVICETYPE=ovs OVS_BRIDGE=br-ex ONBOOT=yes
・br-ex 編集
shellvi /etc/sysconfig/network-scripts/ifcfg-br-ex/etc/sysconfig/network-scripts/ifcfg-br-exDEVICE=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ネットワーク作成
shellneutron 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ネットワーク作成
shellneutron 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
・仮想ルーター作成
shellneutron router-create router1 neutron router-gateway-set router1 public neutron router-interface-add router1 private_subnet
デフォルト フレーバーの修正
・現在のフレーバー確認
・1番目のフレーバーを削除
・1番目に新しいフレーバーを作成
・フレーバー確認
shellnova flavor-list nova flavor-delete 1 nova flavor-create m1.tiny 1 512 10 1 nova flavor-listflavor-createの各値について# nova flavor-create \ FLAVOR_NAME \ FLAVOR_ID \ RAM_IN_MB \ ROOT_DISK_IN_GB \ NUMBER_OF_VCPUSデフォルト セキュリティグループの修正
・PING許可
shellneutron security-group-rule-create \ --protocol icmp \ --direction ingress default nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
・SSH許可
shellneutron 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
インスタンス イメージ作成
・インスタンス イメージ作成に必要なパッケージをインストール
shellyum install -y qemu-img virt-install
・qcow2形式のイメージディスク作成
shellIMAGE_NAME=CentOS6.5 qemu-img create -f qcow2 /var/lib/libvirt/images/$IMAGE_NAME.qcow2 10G
・CentOSイメージ作成
・ネットワークインストールするリポジトリURL指定
・KVM上での名前を指定
・virt-installでインストールするshellREPOS=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イメージ内で
shellrm /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/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0 ONBOOT=yes TYPE=Ethernet BOOTPROTO=dhcp
・イメージファイルの圧縮
shellIMAGE_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を取得する
shellINSTANCE_NAME=CentOS6.5-test DEVICE_ID=`nova list | awk -v INSTANCE_NAME=$INSTANCE_NAME '$4==INSTANCE_NAME{print $2}'` echo $DEVICE_ID
・作成したインスタンスのポートIDを取得する
shellPORT_ID=`neutron port-list --device_id=$DEVICE_ID | awk '/ip_address/{print $2}'` echo $PORT_ID
・フローティングIPの割出とフローティングIPのIDを取得する
shellFLOATINGIP_ID=`neutron floatingip-create public | awk '$2~/^id$/{print $4}'` echo $FLOATINGIP_ID
・フローティングIPをサブネットに割り当てる
shellneutron floatingip-associate $FLOATINGIP_ID $PORT_ID
・確認
shellnova list --name $INSTANCE_NAME neutron floatingip-list --id $FLOATINGIP_ID | awk '{print $6}'
作成したインスタンスにssh接続する
ssh -i mykey root@floating_ip_address