OpenStackのデプロイ方法について、RDO/packstackのやり方は書いたので、devstackを使ったやり方もメモを残しておく。
ちなみにdevstackの場合、公開されているリポジトリからソースコードをダウンロードして環境構築を行うので、最新のコードでOpenStack環境が構築できます*1。とりあえず環境はこんな感じ。
# | 項目 | 今回の設定 |
1 | CPU | 2個 |
2 | メモリ | 8GB |
3 | HDD | 80GB |
4 | OS | Fedora 21 |
5 | OpenStack | Kilo+ |
6 | その他 | KVM上で構築 |
そして、ざっくりとした構成はRDOの時と同じで、2枚のNICが刺さってて、一つは管理用、もうひとつは外部接続用とする。
1. NetworkManagerサービスの無効化
# systemctl stop NetworkManager # systemctl disable NetworkManager
2. NICの設定とnetworkサービスの有効化
# cat /etc/sysconfig/network-scripts/ifcfg-eth0 HWADDR=<MAC Address> TYPE="Ethernet" BOOTPROTO="stacic" NAME="eth0" ONBOOT="yes" IPADDR="192.168.100.2" NETMASK="255.255.255.0" GATEWAY="192.168.100.1"
# cat /etc/sysconfig/network-scripts/ifcfg-eth1 HWADDR=<MAC Address> TYPE="Ethernet" BOOTPROTO="static" NAME="eth1" ONBOOT="yes" IPADDR="192.168.101.2" NETMASK="255.255.255.0" GATEWAY="192.168.101.1" DEFROUTE="no"
# systemctl restart network # systemctrl enable network
3. 最新パッケージへupdate
# yum update -y
4. devstackのソースをダウンロード
$ git clone https://github.com/openstack-dev/devstack.git
5. 設定ファイルの作成
samples/local.confをベースに修正。
$ cd devstack $ cp samples/local.conf . vi local.conf [[local|localrc]] SERVICE_TOKEN=<TOKEN> ADMIN_PASSWORD=<PASSWORD> MYSQL_PASSWORD=$ADMIN_PASSWORD RABBIT_PASSWORD=$ADMIN_PASSWORD SERVICE_PASSWORD=$ADMIN_PASSWORD HOST_IP=192.168.101.50 # Services # -------- disable_service n-net enable_service q-svc enable_service q-agt enable_service q-dhcp enable_service q-l3 enable_service q-meta #enable_service n-novnc # Logging # ------- LOGFILE=$DEST/logs/stack.sh.log LOGDAYS=2 SCREEN_LOGDIR=$DEST/logs/screen # Swift # ----- SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5 SWIFT_REPLICAS=1 SWIFT_DATA_DIR=$DEST/data # Neutron # ------- IP_VERSION=4 PUBLIC_NETWORK_GATEWAY=192.168.101.1 FLOATING_RANGE=192.168.101.240/24 Q_FLOATING_START_IP=192.168.101.240 Q_FLOATING_END_IP=192.168.101.247 Q_FLOATING_ALLOCATION_POOL="start=$Q_FLOATING_START_IP,end=$Q_FLOATING_END_IP" PUBLIC_BRIDGE=br-ex PUBLIC_BRIDGE_IP=192.168.101.50 Q_USE_PROVIDERNET_FOR_PUBLIC=True PUBLIC_PHYSICAL_NETWORK=public OVS_BRIDGE_MAPPINGS=public:br-ex PHYSICAL_NETWORK=public OVS_PHYSICAL_BRIDGE=br-ex [[post-config|$NOVA_CONF]] [DEFAULT] vnc_keymap=ja
6. devstackを実行
./stack.sh
7. br-exにeth1を接続
# ovs-vsctl show 4ca9a93d-18b3-413b-b522-ff9da153d42a Bridge br-ex Port phy-br-ex Interface phy-br-ex type: patch options: {peer=int-br-ex} Port br-ex Interface br-ex type: internal Bridge br-tun fail_mode: secure <snip> # ip a ... 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 ... inet 192.168.101.50/24 brd 192.168.101.255 scope global eth1 ... # ip l set eth1 down # ip a del 192.168.101.50/24 dev eth1 # ip a add 192.168.101.50/24 dev br-ex # ovs-vsctl add-port br-ex eth1 # ip l set eth1 up
これでfloating IPとか割り振って外からインスタンスにアクセスできるはず。
できない場合、Security Groupとかの設定を見直す。
*1:たまに構築できなかったり、動かなかったりするけど