Translate

2012年6月7日木曜日

Ubuntu Server 12.04LTSへOpenStack essexをインストールする

OpenStack essexをインストールしてみた。
上図のような環境で試した。
CloudStackの時は管理コンソールを別だてしたが
参考にした
OpenStack Compute Statrt Guide(May 4, 2012)
を読んだら、
Server1をそのまま実行したら単一サーバになることが
書かれていたので1台こっきりでたてた。

Ubuntu Desktopたてたらおそらく
UltraVNCするPCも不要だが
まあ念のため。




とりあえず500GBは
  • /dev/sda1 16GB スワップ
  • /dev/sda2 84GB OS(/)
  • /dev/sda3 200GB nova-volume用(マウントせず→/mnt/swift_backend)
  • /dev/sda4 200GB swift用(マウントせず)
に分けた。
初めてのインストールなので、
配分はおそらくめちゃくちゃだとおもう。


以下インストール手順を、一挙手一投足をなるべく書きだしてみた。




1. Ubuntu Server 12.04 LTS インストール
  • Ubuntu Server 12.04LTS DVDを差し電源投入
  • 日本語
  • Ubuntu Serverをインストール
  • はい
  • 日本
  • 日本語
  • 日本語 - 日本語 (かな 86)
  • Alt+Shift
  • 戻る
  • ネットワークを手動で設定
  • 192.168.11.101
  • 255.255.255.0
  • 192.168.11.1
  • 8.8.8.8
  • shun
  • fugafuga.jp
  • OpenStack Administrator
  • localadmin
  • (パスワード)
  • (パスワード)
  • はい※脆弱なパスワードの場合
  • いいえ
  • 手動
         ※SCSI1 (0,0,0) (sda) - 500.1 GB ATA Hitachi HDS72105以下のパーティションを全部削除
  • 1.基本 8.0GB F スワップ スワップ
  • パーティションの削除
  • 2.基本 40.0GB B ext4
  • パーティションの削除
  • 3.基本 200.0GB
  • パーティションの削除
  • 4.基本 252.1GB xfs
  • パーティションの削除
        ※SCSI1 (0,0,0) (sda) - 500.1 GB ATA Hitachi HDS72105のパーティションを再設定
  • 基/論 500.1GB 空き領域
  • 新しいパーティションの作成
  • 16.0 GB
  • 基本パーティション
  • 先頭
  • 利用方法: ext4 ジャーナリングファイルシステム
  • スワップ領域
  • パーティションのセットアップを終了
  • 基/論 484.1GB 空き領域
  • 新しいパーティションの作成
  • 84.1 GB
  • 基本パーティション
  • 先頭
  • パーティションのセットアップを終了
  • 基/論 400.0GB 空き領域
  • 新しいパーティションの作成
  • 200.0 GB
  • 基本パーティション
  • 先頭
  • マウントポイント: /home
  • マウントしない
  • パーティションのセットアップを終了
  • 基/論 200.0GB 空き領域
  • 新しいパーティションの作成
  • 200.0 GB
  • 基本パーティション
  • 先頭
  • マウントポイント: /home
  • マウントしない
  • パーティションのセットアップを終了
  • パーティショニングの終了とディスクへの変更の書き込み
  • いいえ
  • いいえ
  • はい
  • http://proxy:8080/
  • セキュリティアップデートを自動的にインストールする
  • OpenSSH serverをチェック
  • 続ける
  • はい
  • 続ける
        ※リブート

2. OpenStack essexインストール
       ※OpenStack Compute Starter Guide May 4,2012を元にインストール作業
  • Server1とServer2を1台にする
  • 同一NICに対してeth0:0を設け、192.168.3.1を割り当てるとする


2.1 準備
  • localadminでログイン
  • sudo su -
  • (localadminパスワード)
  • aptitude update && aptitude -y dist-upgrade && aptitude -y install ntp bridge-utils
  • vi /etc/sysctl.conf
※最終行に追加
net.ipv6.conf.all.disable_ipv6 = 1
  • sysctl -p
  • vi /etc/network/interfaces
※最終行に追加
# The secondary network interface
auto eth0:0
iface eth0:0 inet static
        address 192.168.3.1
        netmask 255.255.255.0
        network 192.168.3.0
        broadcast 192.168.3.255
  • /etc/init.d/networking restart
  • vi /etc/ntp.conf
※編集元
# Use Ubuntu's ntp server as a fallback.
server ntp.ubuntu.com
※編集後
# Use Ubuntu's ntp server as a fallback.
server ntp.ubuntu.com
server 127.127.1.0
fudge 127.127.1.0 strtum 10
  • service ntp restart


2.2 データベース
  • aptitude -y install mysql-server python-mysqldb
  • mygreatsecret(MySQL rootパスワード)
  • mygreatsecret(MySQL rootパスワード)
  • mysql -uroot -pmygreatsecret -e "CREATE DATABASE nova;"
  • mysql -uroot -pmygreatsecret -e "CREATE USER novadbadmin;"
  • mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%';"
  • mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'novadbadmin'@'%' = PASSWORD('novasecret');"
  • mysql -uroot -pmygreatsecret -e "CREATE DATABASE glance;"
  • mysql -uroot -pmygreatsecret -e "CREATE USER glancedbadmin;"
  • mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%';"
  • mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'glancedbadmin'@'%' = PASSWORD('glancesecret');"
  • mysql -uroot -pmygreatsecret -e "CREATE DATABASE keystone;"
  • mysql -uroot -pmygreatsecret -e "CREATE USER keystonedbadmin;"
  • mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystonedbadmin'@'%';"
  • mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'keystonedbadmin'@'%' = PASSWORD('keystonesecret');"

2.3 Keystone
  • aptitude -y install keystone python-keystone python-keystoneclient
  • vi /etc/keystone/keystone.conf
※編集前
admin_token = ADMIN
※編集後
admin_token = admin

※編集前
connection = sqlite:////var/lib/keystone/keystone.db
※編集後
connection = mysql://keystonedbadmin:keystonesecret@192.168.11.101/keystone
  • vi ~/.bashrc
※最終行に追加
export SERVICE_ENDPOINT="http://localhost:35357/v2.0"
export SERVICE_TOKEN=admin
  • exit
  • sudo su -
  • (localadminパスワード)
  • keystone tenant-create --name admin
  • keystone tenant-create --name service
  • keystone user-create --name admin --pass admin --email hogehoge@fugafuga.jp
  • keystone user-create --name nova --pass nova --email hogehoge@fugafuga.jp
  • keystone user-create --name glance --pass glance --email hogehoge@fugafuga.jp
  • keystone user-create --name swift --pass swift --email hogehoge@fugafuga.jp
  • keystone role-create --name admin
  • keystone role-create --name Member
  • keystone tenant-list
※tenant idとnameの結果をメモる
  • keystone user-list
※user idとnameの結果をメモる
  • keystone role-list
※role idとnameの結果をメモる
  • keystone user-role-add --user adminのID --role adminのID --tenant_id adminのID
  • keystone user-role-add --user novaのID --role adminのID --tenant_id serviceのID
  • keystone user-role-add --user glanceのID --role adminのID --tenant_id serviceのID
  • keystone user-role-add --user swiftのID --role adminのID --tenant_id serviceのID
  • keystone user-role-add --user adminのID --role MemberのID --tenant_id adminのID
  • keystone service-create --name nova --type compute --description 'OpenStack Compute Service'keystone service-create --name volume --type volume --description 'OpenStack Volume Service'
  • keystone service-create --name glance --type image --description 'OpenStack Image Service'
  • keystone service-create --name swift --type object-store --description 'OpenStack Storage Service'
  • keystone service-create --name keystone --type identity --description 'OpenStack Identity Service'
  • keystone service-create --name ec2 --type ec2 --description 'EC2 Service'
  • keystone service-list
 ※service idとnameの結果をメモる




    • keystone endpoint-create --region myregion --service_id novaのservice_ID --publicurl 'http://160.14.101.85:8774/v2/$(tenant_id)s' --adminurl 'http://160.14.101.85:8774/v2/$(tenant_id)s' --internalurl 'http://160.14.101.85:8774/v2/$(tenant_id)s'
    • keystone endpoint-create --region myregion --service_id volumeのservice_ID --publicurl 'http://160.14.101.85:8776/v1/$(tenant_id)s' --adminurl 'http://160.14.101.85:8776/v1/$(tenant_id)s' --internalurl 'http://160.14.101.85:8776/v1/$(tenant_id)s'
    • keystone endpoint-create --region myregion --service_id glanceのservice_ID --publicurl 'http://160.14.101.85:9292/v1' --adminurl 'http://160.14.101.85:9292/v1' --internalurl 'http://160.14.101.85:9292/v1'
    • keystone endpoint-create --region myregion --service_id swiftのservice_ID --publicurl 'http://160.14.101.85:8080/v1/AUTH_$(tenant_id)s' --adminurl 'http://160.14.101.85:8080/v1' --internalurl 'http://160.14.101.85:8080/v1/AUTH_$(tenant_id)s'
    • keystone endpoint-create --region myregion --service_id keystoneのservice_ID --publicurl 'http://160.14.101.85:5000/v2.0' --adminurl 'http://160.14.101.85:35357/v2.0' --internalurl 'http://160.14.101.85:5000/v2.0'
    • keystone endpoint-create --region myregion --service_id ec2のservice_ID --publicurl 'http://160.14.101.85:8773/services/Cloud' --adminurl 'http://160.14.101.85:8773/services/Admin' --internalurl 'http://160.14.101.85:8773/services/Cloud'



    2.4 Glance

    • aptitude -y install glance glance-api glance-client glance-common glance-registry python-glance
    • vi /etc/glance/glance-api-paste.ini
     ※編集前
     admin_tenant_name = %SERVICE_TENANT_NAME%
     admin_user = %SERVICE_USER%
     admin_password = %SERVICE_PASSWORD%
     ※編集後
     admin_tenant_name = service
     admin_user = glance
     admin_password = glance

    • vi /etc/glance/glance-registry-paste.ini
     ※編集前
     admin_tenant_name = %SERVICE_TENANT_NAME%
     admin_user = %SERVICE_USER%
     admin_password = %SERVICE_PASSWORD%
     ※編集後
     admin_tenant_name = service
     admin_user = glance
     admin_password = glance

    • vi /etc/glance/glance-registry.conf
     ※編集前
     sql_connection = sqlite:////var/lib/glance/glance.sqlite
     ※編集後
     sql_connection = mysql://glancedbadmin:glancesecret@192.168.11.101/glance
     ※最終行に追加
     [paste_deploy]
     flavor = keystone
    • vi /etc/glance/glance-api.conf
     ※最終行に追加
     [paste_deploy]
     flavor = keystone
    • glance-manage version_control 0
    • glance-manage db_sync
     ※以下のようなエラー発生する
     /usr/lib/python2.7/dist-packages/glance/registry/db/migrate_repo/versions/003_add_disk_format.py:47: SADeprecationWarning: useexisting is deprecated.  Use extend_existing.
       useexisting=True)
     ※これはインデックスix_image_properties_name作成する行にセミコロンがなかった
      バグらしいので手動で作ればクリアできる
    •  mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'localhost';"
    •  mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'glancedbadmin'@'localhost' = PASSWORD('glancesecret');"
    •  mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'shun';"
    •  mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'glancedbadmin'@'shun' = PASSWORD('glancesecret');"
    •  mysql -uglancedbadmin -pglancesecret glance -e "CREATE INDEX ix_image_properties_name ON image_properties (name);"
    • glance-manage db_sync
     ※なにも表示されなければOK
     ※2012/09/06更新上記太字SQL文が途中で消えてましたすみません

    • restart glance-api
    • restart glance-registry
    • vi .bashrc
     ※最終行に追加
     export OS_TENANT_NAME=admin
     export OS_USERNAME=admin
     export OS_PASSWORD=admin
     export OS_AUTH_URL="http://localhost:5000/v2.0/"
    • exit
    • sudo su -
    • (localadminパスワード)
    • glance index


    2.5 Nova

    • aptitude -y install nova-api nova-cert nova-compute nova-compute-kvm nova-doc nova-network nova-objectstore nova-scheduler nova-volume rabbitmq-server novnc nova-consoleauth
    • vi /etc/nova/nova.conf
     ※既存の行をすべて#でコメントアウト
     ※最終行に追加
     --dhcpbridge_flagfile=/etc/nova/nova.conf
     --dhcpbridge=/usr/bin/nova-dhcpbridge
     --logdir=/var/log/nova
     --state_path=/var/lib/nova
     --lock_path=/run/lock/nova
     --allow_admin_api=true
     --use_deprecated_auth=false
     --auth_strategy=keystone
     --scheduler_driver=nova.scheduler.simple.SimpleScheduler
     #--s3_host=10.10.10.2
     --s3_host=192.168.11.101
     #--ec2_host=10.10.10.2
     --ec2_host=192.168.11.101
     #--rabbit_host=10.10.10.2
     --rabbit_host=192.168.11.101
     #--cc_host=10.10.10.2
     --cc_host=192.168.11.101
     #--nova_url=http://10.10.10.2:8774/v1.1/
     --nova_url=http://192.168.11.101:8774/v1.1/
     #--routing_source_ip=10.10.10.2
     --routing_source_ip=192.168.11.101
     #--glance_api_servers=10.10.10.2:9292
     --glance_api_servers=192.168.11.101:9292
     --image_service=nova.image.glance.GlanceImageService
     #--iscsi_ip_prefix=192.168.4
     #--sql_connection=mysql://novadbadmin:novasecret@10.10.10.2/nova
     --sql_connection=mysql://novadbadmin:novasecret@192.168.11.101/nova
     #--ec2_url=http://10.10.10.2:8773/services/Cloud
     --ec2_url=http://192.168.11.101:8773/services/Cloud
     #--keystone_ec2_url=http://10.10.10.2:5000/v2.0/ec2tokens
     --keystone_ec2_url=http://192.168.11.101:5000/v2.0/ec2tokens
     --api_paste_config=/etc/nova/api-paste.ini
     --libvirt_type=kvm
     --libvirt_use_virtio_for_bridges=true
     --start_guests_on_host_boot=true
     --resume_guests_state_on_host_boot=true
     # vnc specific configuration
     --novnc_enabled=true
     #--novncproxy_base_url=http://10.10.10.2:6080/vnc_auto.html
     --novncproxy_base_url=http://192.168.11.101:6080/vnc_auto.html
     #--vncserver_proxyclient_address=10.10.10.2
     --vncserver_proxyclient_address=192.168.11.101
     #--vncserver_listen=10.10.10.2
     --vncserver_listen=0.0.0.0
     # network specific settings
     --network_manager=nova.network.manager.FlatDHCPManager
     --public_interface=eth0
     #--flat_interface=eth1
     --flat_interface=eth0
     --flat_network_bridge=br100
     #--fixed_range=192.168.4.1/27
     --fixed_range=192.168.11.0/24
     #--floating_range=10.10.10.2/27
     --network_size=32
     #--flat_network_dhcp_start=192.168.4.33
     --flat_injected=False
     #--force_dhcp_release
     --force_dhcp_release=True
     #--iscsi_helper=tgtadm
     --connection_type=libvirt
     --root_helper=sudo nova-rootwrap
     --ec2_private_dns_show_ip
     --verbose
    • fdisk -l
     ※nova用領域のデバイス名を確認する
    • pvcreate /dev/sda3
    • vgcreate nova-volumes /dev/sda3
     ※sをうっかり忘れないように。VG名は決め打ち。VG名を誤るとnova-volumeが起動しない
    • chown -R nova:nova /etc/nova
    • chmod 644 /etc/nova/nova.conf
    • vi /etc/nova/api-paste.ini
     ※編集前
     admin_tenant_name = %SERVICE_TENANT_NAME%
     admin_user = %SERVICE_USER%
     admin_password = %SERVICE_PASSWORD%
     ※編集後
     admin_tenant_name = service
     admin_user = nova
     admin_password = nova
    • nova-manage db sync
     ※以下のようなメッセージが出るがDEBUGなので無視する
     2012-06-07 11:21:54 DEBUG nova.utils [-] backend from (pid=31700) __get_backend /usr/lib/python2.7/dist-packages/nova/utils.py:658
    • nova-manage network create private --fixed_range_v4=192.168.4.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth0:0 --network_size=32
     ※以下のようなメッセージが出るがDEBUGなので無視する
     2012-06-07 11:24:43 DEBUG nova.utils [req-911a5093-596c-4499-a9ae-ae22f9fe64e0 None None] backend from (pid=31893) __get_backend /usr/lib/python2.7/dist-packages/nova/utils.py:658
    • restart libvirt-bin;restart nova-network; restart nova-compute; restartnova-api; restart nova-objectstore; restart nova-scheduler; service nova-volume restart; restart nova-consoleauth;
     ※Guideにあるrestart nova-volumeが動かないのでserviceコマンドで代用
    • nova-manage service list
     

    2.6 Horizon(OpenStack Dashboard)

    • aptitude -y install openstack-dashboard
    • service apache2 restart


    2.7 Swift

    • aptitude -y install swift swift-proxy swift-account swift-container swift-object
    • aptitude -y install xfsprogs curl python-pastedeploy
    • fdisk -l
     ※swift用パーティション名を確認する
    • mkfs.xfs -i size=1024 /dev/sda4 -f
     ※Guideには-fがないが、-fをつけるように指示される
     ※tune2fsは実行せず次へ進む
    • mkdir /mnt/swift_backend
    • vi /etc/fstab
     ※最終行に追加
     /dev/sda4 /mnt/swift_backend xfs noatime,nodiratime,nobarrier,logbufs=8 0 0
    • mount /mnt/swift_backend
    • cd /mnt/swift_backend/
    • mkdir node1 node2 node3 node4
    • chown swift.swift /mnt/swift_backend/*
    • for i in {1..4};do ln -s /mnt/swift_backend/node$i /srv/node$i; done;
    • mkdir -p /etc/swift/account-server /etc/swift/container-server /etc/swift/object-server /srv/node1/device /srv/node2/device /srv/node3/device /srv/node4/device
    • mkdir /run/swift
    • vi /etc/rc.local
     ※exit 0という行の前に以下の行を挿入
     sudo mkdir /run/swift
     sudo chown swift.swift /run/swift
    • vi /etc/default/rsync
     ※編集前
     RSYNC_ENABLE=false
     ※編集後
     RSYNC_ENABLE=true
    • vi /etc/rsyncd.conf
     ※新規作成
     [DEFAULT]
     bind_port = 8080
     user = swift
     swift_dir = /etc/swift
     
     [pipeline:main]
     # Order of execution of modules defined below
     pipeline = catch_errors healthcheck cache authtoken keystone proxy-server
     
     [app:proxy-server]
     use = egg:swift#proxy
     allow_account_management = true
     account_autocreate = true
     set log_name = swift-proxy
     set log_facility = LOG_LOCAL0
     set log_level = INFO
     set access_log_name = swift-proxy
     set access_log_facility = SYSLOG
     set access_log_level = INFO
     set log_headers = True
     account_autocreate = True
     
     [filter:healthcheck]
     use = egg:swift#healthcheck
     
     [filter:catch_errors]
     use = egg:swift#catch_errors
     
     [filter:cache]
     use = egg:swift#memcache
     set log_name = cache
     
     [filter:authtoken]
     paste.filter_factory = keystone.middleware.auth_token:filter_factory
     auth_protocol = http
     auth_host = 127.0.0.1
     auth_port = 35357
     auth_token = admin
     service_protocol = http
     service_host = 127.0.0.1
     service_port = 5000
     admin_token = admin
     admin_tenant_name = service
     admin_user = swift
     admin_password = swift
     delay_auth_decision = 0
     
     [filter:keystone]
     paste.filter_factory = keystone.middleware.swift_auth:filter_factory
     operator_roles = admin, swiftoperator
     is_admin = true
    • service rsync status
    • od -t x8 -N 8 -A n < /dev/random
     ※表示される文字列をメモる
    • vi /etc/swift/swift.conf
     ※編集前
     swift_hash_path_suffix = 03c9f48da2229770
     ※編集後
     swift_hash_path_suffix = <メモった文字列>
    • vi cat /etc/rsyncd.conf
     ※新規作成
     # General stuff
     uid = swift
     gid = swift
     log file = /var/log/rsyncd.log
     pid file = /run/rsyncd.pid
     address = 127.0.0.1
     
     # Account Server replication settings
     
     [account6012]
     max connections = 25
     path = /srv/node1/
     read only = false
     lock file = /run/lock/account6012.lock
     
     [account6022]
     max connections = 25
     path = /srv/node2/
     read only = false
     lock file = /run/lock/account6022.lock
     
     [account6032]
     max connections = 25
     path = /srv/node3/
     read only = false
     lock file = /run/lock/account6032.lock
     
     [account6042]
     max connections = 25
     path = /srv/node4/
     read only = false
     lock file = /run/lock/account6042.lock
     
     # Container server replication settings
     
     [container6011]
     max connections = 25
     path = /srv/node1/
     read only = false
     lock file = /run/lock/container6011.lock
     
     [container6021]
     max connections = 25
     path = /srv/node2/
     read only = false
     lock file = /run/lock/container6021.lock
     
     [container6031]
     max connections = 25
     path = /srv/node3/
     read only = false
     lock file = /run/lock/container6031.lock
     
     [container6041]
     max connections = 25
     path = /srv/node4/
     read only = false
     lock file = /run/lock/container6041.lock
     
     # Object Server replication settings
     
     [object6010]
     max connections = 25
     path = /srv/node1/
     read only = false
     lock file = /run/lock/object6010.lock
     
     [object6020]
     max connections = 25
     path = /srv/node2/
     read only = false
     lock file = /run/lock/object6020.lock
     
     [object6030]
     max connections = 25
     path = /srv/node3/
     read only = false
     lock file = /run/lock/object6030.lock
     
     [object6040]
     max connections = 25
     path = /srv/node4/
     read only = false
     lock file = /run/lock/object6040.lock
    • cp /etc/swift/account-server.conf /etc/swift/account-server/1.conf
    • vi /etc/swift/account-server/1.conf
     ※編集前
     [DEFAULT]
     bind_ip = 0.0.0.0
     workers = 2
     
     [pipeline:main]
     pipeline = account-server
     
     [app:account-server]
     use = egg:swift#account
     
     [account-replicator]
     
     [account-auditor]
     
     [account-reaper]
     ※編集後
     [DEFAULT]
     devices = /srv/node1
     mount_check = false
     bind_port = 6012
     user = swift
     log_facility = LOG_LOCAL2
     
     [pipeline:main]
     pipeline = account-server
     
     [app:account-server]
     use = egg:swift#account
     
     [account-replicator]
     vm_test_mode = no
     
     [account-auditor]
     
     [account-reaper]
    • cp /etc/swift/account-server/1.conf /etc/swift/account-server/2.conf
    • cp /etc/swift/account-server/1.conf /etc/swift/account-server/3.conf
    • cp /etc/swift/account-server/1.conf /etc/swift/account-server/4.conf
    • sed -i 's/6012/6022/g;s/LOCAL2/LOCAL3/g;s/node1/node2/g' /etc/swift/account-server/2.conf
    • sed -i 's/6012/6032/g;s/LOCAL2/LOCAL4/g;s/node1/node3/g' /etc/swift/account-server/3.conf
    • sed -i 's/6012/6042/g;s/LOCAL2/LOCAL5/g;s/node1/node4/g' /etc/swift/account-server/4.conf
    • vi /etc/swift/container-server.conf
     ※最終行に追加
     [container-sync]
    • vi /etc/swift/container-server/1.conf
     ※以下のように編集
     [DEFAULT]
     devices = /srv/node1
     mount_check = false
     bind_port = 6011
     user = swift
     log_facility = LOG_LOCAL2
     
     [pipeline:main]
     pipeline = container-server
     
     [app:container-server]
     use = egg:swift#container
     
     [container-replicator]
     vm_test_mode = no
     
     [container-updater]
     
     [container-auditor]
     
     [container-sync]
    • cp /etc/swift/container-server/1.conf /etc/swift/container-server/2.conf
    • cp /etc/swift/container-server/1.conf /etc/swift/container-server/3.conf
    • cp /etc/swift/container-server/1.conf /etc/swift/container-server/4.conf
    • sed -i 's/6011/6021/g;s/LOCAL2/LOCAL3/g;s/node1/node2/g' /etc/swift/container-server/2.conf
    • sed -i 's/6011/6031/g;s/LOCAL2/LOCAL4/g;s/node1/node3/g' /etc/swift/container-server/3.conf
    • sed -i 's/6011/6041/g;s/LOCAL2/LOCAL5/g;s/node1/node4/g' /etc/swift/container-server/4.conf
    • cp /etc/swift/object-server.conf /etc/swift/container-server/2.conf
    • cp /etc/swift/object-server.conf /etc/swift/container-server/3.conf
    • cp /etc/swift/object-server.conf /etc/swift/container-server/4.conf
    • sed -i 's/6010/6020/g;s/LOCAL2/LOCAL3/g;s/node1/node2/g' /etc/swift/object-server/2.conf
    • sed -i 's/6010/6030/g;s/LOCAL2/LOCAL4/g;s/node1/node3/g' /etc/swift/object-server/3.conf
    • sed -i 's/6010/6040/g;s/LOCAL2/LOCAL5/g;s/node1/node4/g' /etc/swift/object-server/4.conf
    • cd /etc/swift/
    • swift-ring-builder object.builder create 18 3 1
    • swift-ring-builder container.builder create 18 3 1
    • swift-ring-builder account.builder create 18 3 1
    • swift-ring-builder object.builder add z1-127.0.0.1:6010/device 1
    • swift-ring-builder object.builder add z2-127.0.0.1:6020/device 1
    • swift-ring-builder object.builder add z3-127.0.0.1:6030/device 1
    • swift-ring-builder object.builder add z4-127.0.0.1:6040/device 1
    • swift-ring-builder object.builder rebalance
    • swift-ring-builder container.builder add z1-127.0.0.1:6011/device 1
    • swift-ring-builder container.builder add z2-127.0.0.1:6021/device 1
    • swift-ring-builder container.builder add z3-127.0.0.1:6031/device 1
    • swift-ring-builder container.builder add z4-127.0.0.1:6041/device 1
    • swift-ring-builder container.builder rebalance
    • swift-ring-builder account.builder add z1-127.0.0.1:6012/device 1
    • swift-ring-builder account.builder add z2-127.0.0.1:6022/device 1
    • swift-ring-builder account.builder add z3-127.0.0.1:6032/device 1
    • swift-ring-builder account.builder add z4-127.0.0.1:6042/device 1
    • swift-ring-builder account.builder rebalance
    • swift-init main start
    • swift-init rest start
    • chown -R swift.swift /etc/swift
    • swift -v -V 2.0 -A http://127.0.0.1:5000/v2.0/ -U service:swift -K swift stat
     ※以下の様なメッセージが出たらOK
     StorageURL: http://192.168.11.101:8080/v1/AUTH_74511892218d479c93ff1533970a8013
     Auth Token: f8bba3e67b464d0ca41e6735aa4358a1
        Account: AUTH_74511892218d479c93ff1533970a8013
     Containers: 0
        Objects: 0
          Bytes: 0
     Accept-Ranges: bytes
     X-Trans-Id: txcde473a4ccdb4773bad93cdd0561dac2


    3. OSイメージ作成
    3.1 サーバ側作業

    • cd
    • kvm-img create -f qcow2 server.img 5G
    ※proxy設定が必要な場合:export http_proxy=http://proxy:9999/
    • wget http://gb.releases.ubuntu.com//precise/ubuntu-12.04-server-amd64.iso
    • kvm -m 256 -cdrom ubuntu-12.04-server-amd64.iso -drive file=server.img,if=virtio,index=0 -boot d -net nic -net user -nographic -vnc :0

    3.2 PC側作業(UltraVNC)

    ※同じLANに繋がっているUltraVNCがインストールされたPCで以下の作業実施
    • スタート>すべてのプログラム>UltraVNC>UltraVNC Viewer
    • VNC Server: 192.168.11.101
    • Connectボタン
    ※インストール手順省略(適当に済ませる)
    ※再起動後ログインしsudo shutdown -h nowして停止させる
     →サーバ側のkvmコマンドが終了しているはず

    3.3 サーバ側作業

    ※サーバ上で以下のコマンドを実行
    • kvm -m 256 -drive file=server.img,if=virtio,index=0 -boot c -net nic -net user -nographic -vnc :0

    3.4 PC側作業(UltraVNC)

    ※同じLANに繋がっているUltraVNCがインストールされたPCで以下の作業実施
    • スタート>すべてのプログラム>UltraVNC>UltraVNC Viewer
    • VNC Server: 192.168.11.101
    • Connectボタン
    ※ログイン
    • sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules
    • (管理者パスワード)
    • sudo shutdown -h now

    3.5 サーバ側作業

    ※サーバ上で以下のコマンドを実行
    • glance add name="Ubuntu Server 12.04LTS" is_public=true container_format=ovf disk_format=qcow2 < server.img
    • ssh-keygen
    • cd .ssh
    • nova keypair-add --pub_key id_rsa.pub mykey
    • nova keypair-list
    • exit
    • exit


    4. OpenStack Dashboard上でインスタンス起動

    ※同じLANに繋がっているブラウザがインストールされたPCで以下の作業実施
    • ブラウザ起動(何でもよい)
    • http://192.168.11.101 を開く
    • ユーザ名admin、パスワードadminでログイン
    • Projectタブ
    • Images&Snapshotsタブ
    • "Ubuntu Server 12.04LTS"のLaunchボタン
    • Server Name は適当に入力
    • 「イメージを起動します。」ボタン
    ※起動するまで待つ
    • Instances&Volumesタブ
    • アクション>VNC Console
    ※コンソールが表示される

    以下、省略




    ほぼGuideどおりのインストールを実行すれば良い。

    インデックスのところとMySQLのlocalhostでのログインユーザの癖さえわかっておけば
    ほぼそのままだ。


    ..インストールモジュールが細かく分かれているので
    インストール構成が分散できるとはおもうが..
    逆にインストールを難しくしており、
    そのあたりはCloudStackのほうがよく整理できていた。
    インストール難易度はCloudStackのほうが上だったが..

    Horizon(ダッシュボード)のかっこ良さはCloudStackだが
    統計情報がCloudPortalなしで提供してくれそうな感じのUIだったので
    まあどっちともいえない。

    CloudStackはラック1~2本くらいの場合、
    OpenStackはより複雑な場合に使用するのだろうが、
    APIは統一させたいのでやはりどっちかを選ぶこととなる。


    keystoneが企業の統合認証に耐えられるレベルでかつ
    LDAPになっていて企業のWindows認証もおまかせ的であれば
    もうすこし使い道が広がるかもしれない。


    p.s.
    実はCloudStackインストール手順も記事にしているのだけど、
    PV数はOpenStackのほうが約2倍すこしたりないくらいで
    推移している。
     
    OpenStackのドキュメントは英語しか無いがほぼ一挙手一投足真似て
    ひっかかったところを丁寧につぶしていけば問題なくインストールできるのに対して、
    CloudStackは日本語マニュアルはあるとはいえいろいろちょこちょこやらないと
    インストール出来ない。

    それにCloudStackは日本人が好きなJavaだし、
    モジュール構成もインストールする側からするとCloudStackのほうがシンプルだし、
    管理コンソールのどっちかといえばあっちのほうがかっこいいのだけどなあ..

    世の中の関心はCloudStackではなく、
    OpenStackに向いているのかなあ..

    もうしばらくPVの伸びを観察してみようっと。

    0 件のコメント:

    ClaudeをOpenAI O1のように思考させるDifyサンプルを試す

     Difyの「探索」タブにはさまざまなサンプルが載っており、その1つに「Thinking Claude (OpenAI O1 Alternative)」というものがある。   このサンプルがどういうものか、未だに自分でも解けない以下の問題をためしに聞いてみることにした。 『人類の...