OpenStack-Kilo "hands"をデプロむしたす

すべおのハブラリュディにこんにちは

前の蚘事で 、DevStackを䜿甚しおテスト環境を迅速にデプロむする方法に぀いお説明したした。 この出版物では、構成内の2぀のマシンコントロヌラヌ、コンピュヌトにOpenStack「クラりド」をデプロむする方法を説明したす。


䞀般に、このシステムにより、倚くの仮想マシンを起動しメモリずCPUが蚈算できる限り、仮想ネットワヌクを䜜成し、仮想ディスクを䜜成しおVMに接続し、もちろんすべおを䟿利なダッシュボヌドで管理できたす。

ご泚意 コマンドず蚭定のリストを含む倚くの「フットラップ」


私はすぐに蚀わなければなりたせん


無意識のうちに「コピヌアンドペヌスト」しないでください。 もちろん、これはこのガむドのOpenStack環境の確立に圹立ちたすが、この知識を珟堎で䜿甚するこずは教えたせん。

䜕を䜿甚したすか


OS Ubuntu 14.04 CentOSを䜿甚できたすが、ガむドはUbuntuに基づいおいたす。
OpenStack゚ディション Kilo

準備する

ネットワヌク


元のマニュアルでは4぀のネットワヌクを䜿甚しおいたす。
管理-10.0.0.0/24-VLAN 10
トンネル-10.0.1.0/24-VLAN 11
ストレヌゞ-10.0.2.0/24-VLAN 12
倖郚-192.168.1.0/24

私たちの堎合、倖郚ネットワヌクはホヌムネットワヌクのどこかに芋えたすが、抂しおこのむンタヌフェむスはWorld Wide Webも芋るこずができたす。それはすべお、クラりドを展開する察象によっお異なりたす。

機胜しおいるdns-serverがあるず非垞に䟿利です。 私はdnsmasqを䜿甚したした。
# cat /etc/hosts 10.0.0.11 controller 10.0.0.31 compute1 


むンタヌフェむスを構成する
コントロヌラヌ䞊
 # cat /etc/network/interfaces auto p2p1.10 iface p2p1.10 inet static address 10.0.0.11 netmask 255.255.255.0 gateway 10.0.0.1 dns-nameservers 10.0.0.1 auto p2p1.11 iface p2p1.11 inet static address 10.0.1.11 netmask 255.255.255.0 auto p2p1.12 iface p2p1.12 inet static address 10.0.2.11 netmask 255.255.255.0 #     auto p3p1 iface p3p1 inet manual up ip link set dev $IFACE up down ip link set dev $IFACE down 



コンピュヌティングノヌド
 # cat /etc/network/interfaces auto p2p1.10 iface p2p1.10 inet static address 10.0.0.31 netmask 255.255.255.0 gateway 10.0.0.1 dns-nameservers 10.0.0.1 auto p2p1.11 iface p2p1.11 inet static address 10.0.1.31 netmask 255.255.255.0 auto p2p1.12 iface p2p1.12 inet static address 10.0.2.31 netmask 255.255.255.0 



䞡方の車がお互いを芋おネットワヌクに行くこずを確認したす。

NTP

コントロヌラヌ䞊
 # apt-get install ntp -y # cat /etc/ntp.conf server ntp.oceantelecom.ru iburst restrict -4 default kod notrap nomodify restrict -6 default kod notrap nomodify # service ntp stop # ntpdate ntp.oceantelecom.ru # service ntp start 


蚈算ノヌドで
 # apt-get install ntp -y # cat /etc/ntp.conf server controller iburst # service ntp stop # ntpdate controller # service ntp start 


Kiloリポゞトリ


 # apt-get install ubuntu-cloud-keyring # echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu" "trusty-updates/kilo main" > /etc/apt/sources.list.d/cloudarchive-kilo.list 


Kiloはかなり若いリリヌスです-2015幎4月。 このリリヌスの䜕よりも、Horizo​​nむンタヌフェむスでロシア語が気に入った。
詳现はこちらをご芧ください 。

曎新された
 # apt-get update && apt-get dist-upgrade -y 


SQL + RabbitMQ

SQLサヌバヌの圹割は、MySQL、PostgreSQL、Oracle、たたはSQLAlchemyでサポヌトされおいるその他の圹割です。 公匏マニュアルのようにMariaDBをむンストヌルしたす。
 # apt-get install mariadb-server python-mysqldb -y # cat /etc/mysql/conf.d/mysqld_openstack.cnf [mysqld] bind-address = 10.0.0.11 default-storage-engine = innodb innodb_file_per_table collation-server = utf8_general_ci init-connect = 'SET NAMES utf8' character-set-server = utf8 # service mysql restart # mysql_secure_installation 

優れたパフォヌマンスを備えた远加のHDDがあれば、デヌタベヌスファむルをその䞊に眮くこずができ、コンピュヌティングノヌドでスタンドを開発するこずを蚈画しおいる堎合、それは䞍芁ではありたせん。

そしおもちろん、RabbitMQ
 # apt-get install rabbitmq-server # rabbitmq-plugins enable rabbitmq_management # service rabbitmq-server restart 

キュヌを远跡するのに䟿利なように、再起動を蚭定し、管理WebGUIを実行したす。

ナヌザヌを䜜成し、そのナヌザヌに暩利を蚭定したす。
 rabbitmqctl add_user openstack RABBIT_PASS rabbitmqctl set_permissions openstack ".*" ".*" ".*" 


キヌストヌン

Keystoneは、OpenStackの認蚌センタヌです。 すべおの承認はそれを通過したす。 KeystoneはデヌタをSQLデヌタベヌスに保存したすが、memcacheも䜿甚したす。

デヌタベヌスを準備したす。
 # mysql -u root -p CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS'; 

圓然、他の堎所のようにパスワヌドを眮き換えるこずを忘れないでください。

keystoneサヌビスの自動起動をオフにしお、必芁なすべおのコンポヌネントをむンストヌルしたす。
 # echo "manual" > /etc/init/keystone.override # apt-get install keystone python-openstackclient apache2 libapache2-mod-wsgi memcached python-memcache 


/etc/keystone/keystone.conf config で 、次の行を蚘述したす。
 [DEFAULT] admin_token = ADMIN_TOKEN [database] connection = mysql://keystone:KEYSTONE_DBPASS@controller/keystone [memcache] servers = localhost:11211 [token] provider = keystone.token.providers.uuid.Provider driver = keystone.token.persistence.backends.memcache.Token [revoke] driver = keystone.contrib.revoke.backends.sql.Revoke 


「 openssl rand -hex 16 」を䜿甚するADMIN_TOKENゞェネレヌタヌ。
ロヌカルデヌタベヌスをSQLサヌバヌず同期したす
 # su -s /bin/sh -c "keystone-manage db_sync" keystone 


Apacheを構成したす。
フットクロス
 # cat /etc/apache2/apache2.conf ... ServerName controller ... # cat /etc/apache2/sites-available/wsgi-keystone.conf Listen 5000 Listen 35357 <VirtualHost *:5000> WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone display-name=%{GROUP} WSGIProcessGroup keystone-public WSGIScriptAlias / /var/www/cgi-bin/keystone/main WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On <IfVersion >= 2.4> ErrorLogFormat "%{cu}t %M" </IfVersion> LogLevel info ErrorLog /var/log/apache2/keystone-error.log CustomLog /var/log/apache2/keystone-access.log combined </VirtualHost> <VirtualHost *:35357> WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone display-name=%{GROUP} WSGIProcessGroup keystone-admin WSGIScriptAlias / /var/www/cgi-bin/keystone/admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On <IfVersion >= 2.4> ErrorLogFormat "%{cu}t %M" </IfVersion> LogLevel info ErrorLog /var/log/apache2/keystone-error.log CustomLog /var/log/apache2/keystone-access.log combined </VirtualHost> # ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled # mkdir -p /var/www/cgi-bin/keystone # curl http://git.openstack.org/cgit/openstack/keystone/plain/httpd/keystone.py?h=stable/kilo | tee /var/www/cgi-bin/keystone/main /var/www/cgi-bin/keystone/admin # chown -R keystone:keystone /var/www/cgi-bin/keystone # chmod 755 /var/www/cgi-bin/keystone/* # service apache2 restart # rm -f /var/lib/keystone/keystone.db 


ServerNameをコントロヌラヌの名前に倉曎したす。
openstackリポゞトリから䜜業スクリプトを取埗したす。

゚ンドポむントを構成したす。 実際、openstackはどこでどのサヌビスが機胜するかを知っおいる゚ンドポむントのおかげです。

keystoneパラメヌタヌで毎回指定しないように、環境倉数を远加したす。
 # export OS_TOKEN=ADMIN_TOKEN # export OS_URL=http://controller:35357/v2.0 


次に、サヌビスを䜜成したす。
 # openstack service create --name keystone --description "OpenStack Identity" identity 

さお、゚ンドポむントAPIを䜜成したす。
 # openstack endpoint create --publicurl http://controller:5000/v2.0 --internalurl http://controller:5000/v2.0 --adminurl http://controller:35357/v2.0 --region RegionOne identity 

RegionOneは、人間が読める任意の名前に倉曎できたす。 「仲良くしない」ように䜿甚したす。

プロゞェクト、ナヌザヌ、ロヌルを䜜成したす。

公匏マナに埓っお匕き続き行うので、すべお同じです管理者ずデモ
 # openstack project create --description "Admin Project" admin # openstack user create --password-prompt admin # openstack role create admin # openstack role add --project admin --user admin admin 

管理者のパスワヌドを自分で䜜成したす。 順序「管理プロゞェクト」プロゞェクト、ナヌザヌおよび管理ロヌルを䜜成し、プロゞェクトずナヌザヌをロヌルに接続したす。

次に、 サヌビスプロゞェクトを䜜成したす 。
 # openstack project create --description "Service Project" service 


adminずの類掚により、デモを䜜成したす。
 # openstack project create --description "Demo Project" demo # openstack user create --password-prompt demo # openstack role create user # openstack role add --project demo --user demo user 


環境スクリプトを䜜成したす。
スクリプト
 # cat admin-openrc.sh export OS_PROJECT_DOMAIN_ID=default export OS_USER_DOMAIN_ID=default export OS_PROJECT_NAME=admin export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=ADMIN_PASS export OS_AUTH_URL=http://controller:35357/v3 export OS_IMAGE_API_VERSION=2 export OS_VOLUME_API_VERSION=2 # cat demo-openrc.sh export OS_PROJECT_DOMAIN_ID=default export OS_USER_DOMAIN_ID=default export OS_PROJECT_NAME=demo export OS_TENANT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=DEMO_PASS export OS_AUTH_URL=http://controller:5000/v3 export OS_IMAGE_API_VERSION=2 export OS_VOLUME_API_VERSION=2 



実際
 # source admin-openrc.sh 

これで、 キヌストヌンサヌビスのセットアップが完了したした。

䞀目

Glanceは、仮想マシンのテンプレヌトむメヌゞを保存するためのOpenStackツヌルです。 画像はSwiftのGlance独自のリポゞトリに保存できたすが、他の堎所にも保存できたす。䞻なこずは、この画像はhttp経由で取埗できるこずです。

い぀も通りmysqlから始めたしょう
 # mysql -u root -p CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS'; 


将来のサヌビスに関するキヌストヌン情報を䜜成したす。
 # openstack user create --password-prompt glance # openstack role add --project service --user glance admin # openstack service create --name glance --description "OpenStack Image service" image # openstack endpoint create --publicurl http://controller:9292 --internalurl http://controller:9292 --adminurl http://controller:9292 --region RegionOne image 

ナヌザヌ䞀芧を䜜成し、 管理者ロヌルに接続したす。 すべおのサヌビスはこのロヌルから正確に機胜したす。Glanceサヌビスを䜜成し、゚ンドポむントを蚭定したす。

次に、むンストヌルを続行したす。
 # apt-get install glance python-glanceclient 

およびセットアップ
カスタマむズ
 # cat /etc/glance/glance-api.conf [DEFAULT] ... notification_driver = noop [database] connection = mysql://glance:GLANCE_DBPASS@controller/glance [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = glance password = GLANCE_PASS [paste_deploy] flavor = keystone [glance_store] default_store = file filesystem_store_datadir = /var/lib/glance/images/ 



[keystone_authtoken]セクションを削陀する必芁があるものは䜕でも。 GLANCE_PASS-keystoneのナヌザヌ目線からのパスワヌド。 filesystem_store_datadirは、むメヌゞが眮かれるリポゞトリぞのパスです。 ディスク障害によっおすべおのむメヌゞが誀っお倱われないように、このディレクトリにRAIDアレむたたは信頌できるネットワヌクストレヌゞをマりントするこずをお勧めしたす。

/etc/glance/glance-registry.confで 、セクションデヌタベヌスkeystone_authtoken、paste_deploy、DEFAULTから同じ情報を耇補したす 。

デヌタベヌスを同期したす。
 # su -s /bin/sh -c "glance-manage db_sync" glance 


サヌビスを再起動し、ロヌカルデヌタベヌスを削陀したす。
 # service glance-registry restart # service glance-api restart # rm -f /var/lib/glance/glance.sqlite 


公匏マニュアルでは、 cirrosがロヌドされたすが、これは䞀般に必芁ないため、Ubuntuむメヌゞをロヌドしたす。
 # mkdir /tmp/images # wget -P /tmp/images http://cloud-images.ubuntu.com/releases/14.04.2/release/ubuntu-14.04-server-cloudimg-amd64-disk1.img # glance image-create --name "Ubuntu-Server-14.04.02-x86_64" --file /tmp/images/ubuntu-14.04-server-cloudimg-amd64-disk1.img --disk-format qcow2 --container-format bare --visibility public --progress # rm -r /tmp/images 

必芁なすべおの画像をすぐに入力できたすが、ダッシュボヌドが衚瀺されるたで埅぀ず思いたす。
党䜓-Glanceサヌビスの準備ができたした。

ノノァ

NovaはOpenStackのIaaSの䞻芁郚分です。 Novaのおかげで、仮想マシンは自動的に䜜成されたす。 NovaはKVM、Xen、Hyper-V、VMwareず察話できたすが、皮肉なようです正盎なずころ、どのように機胜するのかよくわかりたせん。 KVMを䜿甚したすが、他のハむパヌバむザヌでは構成が異なりたす。

コントロヌラヌ


再び、デヌタベヌスから始めたす。
 # mysql -u root -p CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS'; 


keystoneに情報を远加したす。
 # openstack user create --password-prompt nova # openstack role add --project service --user nova admin # openstack service create --name nova --description "OpenStack Compute" compute # openstack endpoint create --publicurl http://controller:8774/v2/%\(tenant_id\)s --internalurl http://controller:8774/v2/%\(tenant_id\)s --adminurl http://controller:8774/v2/%\(tenant_id\)s --region RegionOne compute 


必芁なパッケヌゞをむンストヌルしたす。
 # apt-get install nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient 


/etc/nova/nova.conf
 [DEFAULT] ... rpc_backend = rabbit auth_strategy = keystone my_ip = 10.0.0.11 vncserver_listen = 10.0.0.11 vncserver_proxyclient_address = 10.0.0.11 [database] connection = mysql://nova:NOVA_DBPASS@controller/nova [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = nova password = NOVA_PASS [glance] host = controller [oslo_concurrency] lock_path = /var/lib/nova/tmp 



デヌタベヌスを同期し、サヌビスを再起動しお、ロヌカルデヌタベヌスを削陀したす。
 # su -s /bin/sh -c "nova-manage db sync" nova # service nova-api restart # service nova-cert restart # service nova-consoleauth restart # service nova-scheduler restart # service nova-conductor restart # service nova-novncproxy restart # rm -f /var/lib/nova/nova.sqlite 


蚈算ノヌド

これで、コンピュヌティングノヌドでの䜜業がようやく始たりたした。 説明されおいるすべおのアクションは、システム内の各コンピュヌティングノヌドで有効です。
 # apt-get install nova-compute sysfsutils 


/etc/nova/nova.conf
 [DEFAULT] ... verbose = True rpc_backend = rabbit auth_strategy = keystone my_ip = 10.0.0.31 #MANAGEMENT_INTERFACE_IP_ADDRESS vnc_enabled = True vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = 10.0.0.31 #MANAGEMENT_INTERFACE_IP_ADDRESS novncproxy_base_url = http://controller:6080/vnc_auto.html [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = nova password = NOVA_PASS [glance] host = controller [oslo_concurrency] lock_path = /var/lib/nova/tmp [libvirt] virt_type = kvm 


MANAGEMENT_INTERFACE_IP_ADDRESSは、VLAN 10の蚈算ノヌドのアドレスです。
novncproxy_base_urlコントロヌラヌは、Webブラりザヌからアクセスできるアドレスに察応する必芁がありたす。 そうしないず、Horizo​​nからvncコン゜ヌルを䜿甚できたせん。

サヌビスを再起動し、デヌタベヌスのロヌカルコピヌを削陀したす。
 # service nova-compute restart # rm -f /var/lib/nova/nova.sqlite 


すべおが正垞に機胜するかどうかを確認したす。
 # nova service-list +----+------------------+------------+----------+---------+-------+----------------------------+-----------------+ | Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason | +----+------------------+------------+----------+---------+-------+----------------------------+-----------------+ | 1 | nova-conductor | controller | internal | enabled | up | 2014-09-16T23:54:02.000000 | - | | 2 | nova-consoleauth | controller | internal | enabled | up | 2014-09-16T23:54:04.000000 | - | | 3 | nova-scheduler | controller | internal | enabled | up | 2014-09-16T23:54:07.000000 | - | | 4 | nova-cert | controller | internal | enabled | up | 2014-09-16T23:54:00.000000 | - | | 5 | nova-compute | compute1 | nova | enabled | up | 2014-09-16T23:54:06.000000 | - | +----+------------------+------------+----------+---------+-------+----------------------------+-----------------+ 

5行目は、すべおが正しく行われたこずを瀺しおいたす。

最も重芁なこずを行いたした-今ではIaaSがありたす。

䞭性子

Neutronは、サヌビスずしおのネットワヌクNaaSサヌビスです。 䞀般に、公匏文曞では若干異なる定矩が提䟛されおいたすが、より明確になるず思いたす。 Nova-networkingはOpenStackの新しいバヌゞョンでは廃止されおいるず宣蚀されおいるため、䜿甚したせん。 はい、䞭性子の機胜ははるかに広いです。

コントロヌラヌ

マニュアルでは3番目のノヌドが䜿甚されおいたすが、コントロヌラヌにネットワヌクコアをむンストヌルしたす。 倚数のコンピュヌティングノヌド> 10が存圚する堎合、および/たたはネットワヌクの負荷が非垞に高くなる堎合は、ネットワヌクサヌバヌを別のノヌドに移動するこずをお勧めしたす。

い぀ものように、デヌタベヌスから始めたしょう
 # mysql -u root -p CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS'; 


キヌストヌン
 # openstack user create --password-prompt neutron # openstack role add --project service --user neutron admin # openstack service create --name neutron --description "OpenStack Networking" network # openstack endpoint create --publicurl http://controller:9696 --adminurl http://controller:9696 --internalurl http://controller:9696 --region RegionOne network 


必芁なコンポヌネントをむンストヌルしたす。
 # apt-get install neutron-server neutron-plugin-ml2 python-neutronclient neutron-plugin-openvswitch-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent 


/etc/sysctl.confを修正するこずも必芁です
 # cat /etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 # sysctl -p 


/etc/neutron/neutron.conf
 [DEFAULT] ... rpc_backend = rabbit auth_strategy = keystone core_plugin = ml2 service_plugins = router allow_overlapping_ips = True notify_nova_on_port_status_changes = True notify_nova_on_port_data_changes = True nova_url = http://controller:8774/v2 [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS [database] connection = mysql://neutron:NEUTRON_DBPASS@controller/neutron [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = neutron password = NEUTRON_PASS [nova] auth_url = http://controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default region_name = RegionOne project_name = service username = nova password = NOVA_PASS 


蚭定を線集するずき、コメントアりトされた行を陀いお、そこから䜕も削陀しないでください。
/etc/neutron/plugins/ml2/ml2_conf.ini
 [ml2] type_drivers = flat,vlan,gre,vxlan tenant_network_types = gre mechanism_drivers = openvswitch [ml2_type_gre] tunnel_id_ranges = 1000:2000 [ml2_type_flat] flat_networks = external [securitygroup] enable_security_group = True enable_ipset = True firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver [ovs] local_ip = 10.0.1.11 #INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS bridge_mappings = external:br-ex [agent] tunnel_types = gre 



/etc/neutron/l3_agent.ini
 [DEFAULT] interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver external_network_bridge = router_delete_namespaces = True 



/etc/neutron/dhcp_agent.ini
 [DEFAULT] interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq dhcp_delete_namespaces = True dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf 



/etc/neutron/dnsmasq-neutron.conf
 dhcp-option-force=26,1454 

公匏ドキュメントでは、この蚭定はゞャンボフレヌムをサポヌトしおいないネットワヌクデバむスに䜿甚されおいたしたが、䞀般に、dnsmasqのほがすべおの蚭定をそこに蚘述できたす。


すべおのdnsmasqプロセスを匷制終了したす
 # pkill dnsmasq 


/etc/neutron/metadata_agent.ini
 [DEFAULT] auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_region = RegionOne auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = neutron password = NEUTRON_PASS nova_metadata_ip = controller metadata_proxy_shared_secret = METADATA_SECRET 



/etc/nova/nova.conf
 [DEFAULT] ... network_api_class = nova.network.neutronv2.api.API security_group_api = neutron linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver firewall_driver = nova.virt.firewall.NoopFirewallDriver [neutron] url = http://controller:9696 auth_strategy = keystone admin_auth_url = http://controller:35357/v2.0 admin_tenant_name = service admin_username = neutron admin_password = NEUTRON_PASS service_metadata_proxy = True metadata_proxy_shared_secret = METADATA_SECRET 

METADATA_SECRETは、 10〜16文字の文字セットでもありたす


nova.confからは䜕も削陀せず、远加するだけです。

デヌタベヌスを同期し、サヌビスを再起動したす。
 # su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron # service nova-api restart # service neutron-server restart # service openvswitch-switch restart 


ブリッゞを䜜成し、倖郚むンタヌフェむスに接続したす
 # ovs-vsctl add-br br-ex # ovs-vsctl add-port br-ex p3p1 


むンタヌフェヌスを再起動する
 # service neutron-plugin-openvswitch-agent restart # service neutron-l3-agent restart # service neutron-dhcp-agent restart # service neutron-metadata-agent restart 


蚈算ノヌド


コメントはありたせん。
 # cat /etc/sysctl.conf net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1 # sysctl -p 


 # apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent 


/etc/neutron/neutron.conf
 [DEFAULT] ... rpc_backend = rabbit auth_strategy = keystone core_plugin = ml2 service_plugins = router allow_overlapping_ips = True [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = neutron password = NEUTRON_PASS 



/etc/neutron/plugins/ml2/ml2_conf.ini
 [ml2] type_drivers = flat,vlan,gre,vxlan tenant_network_types = gre mechanism_drivers = openvswitch [ml2_type_gre] tunnel_id_ranges = 1000:2000 [ml2_type_flat] flat_networks = external [securitygroup] enable_security_group = True enable_ipset = True firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver [ovs] local_ip = 10.0.1.31 #INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS bridge_mappings = external:br-ex [agent] tunnel_types = gre 



openvswitchを再起動したす
 # service openvswitch-switch restart 


/etc/nova/nova.confに行を远加したす
 [DEFAULT] ... network_api_class = nova.network.neutronv2.api.API security_group_api = neutron linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver firewall_driver = nova.virt.firewall.NoopFirewallDriver [neutron] url = http://controller:9696 auth_strategy = keystone admin_auth_url = http://controller:35357/v2.0 admin_tenant_name = service admin_username = neutron admin_password = NEUTRON_PASS 


サヌビスを再起動したす。
 # service nova-compute restart # service neutron-plugin-openvswitch-agent restart 


蚀及するこずを忘れなかった堎合、次のようになりたす。
 # neutron agent-list +--------------------------------------+--------------------+----------+-------+----------------+---------------------------+ | id | agent_type | host | alive | admin_state_up | binary | +--------------------------------------+--------------------+----------+-------+----------------+---------------------------+ | 30275801-e17a-41e4-8f53-9db63544f689 | Metadata agent | network | :-) | True | neutron-metadata-agent | | 4bd8c50e-7bad-4f3b-955d-67658a491a15 | Open vSwitch agent | network | :-) | True | neutron-openvswitch-agent | | 756e5bba-b70f-4715-b80e-e37f59803d20 | L3 agent | network | :-) | True | neutron-l3-agent | | 9c45473c-6d6d-4f94-8df1-ebd0b6838d5f | DHCP agent | network | :-) | True | neutron-dhcp-agent | | a5a49051-05eb-4b4f-bfc7-d36235fe9131 | Open vSwitch agent | compute1 | :-) | True | neutron-openvswitch-agent | +--------------------------------------+--------------------+----------+-------+----------------+---------------------------+ 


ネットワヌク

次に、ネットワヌクの初期調達を行いたす。 1぀の倖郚ネットワヌクず1぀の内郚ネットワヌクを䜜成したす。

仮想ネットワヌクを䜜成したす。
 # neutron net-create ext-net --router:external --provider:physical_network external --provider:network_type flat 


倖郚サブネットを構成したす。
 # neutron subnet-create ext-net 192.168.1.0/24 --name ext-subnet \ --allocation-pool start=192.168.1.100,end=192.168.1.200 \ --disable-dhcp --gateway 192.168.1.1 

倖郚ネットワヌクは192.168.1.0/24であり、ルヌタヌはむンタヌネット䞊で192.168.1.1をリリヌスしおいたす。 クラりドの倖郚アドレスは、192.168.1.101-200の範囲から発行されたす。

次に、 デモプロゞェクトの内郚ネットワヌクを䜜成したす。そのため、デモナヌザヌの倉数を読み蟌む必芁がありたす。
 # source demo-openrc.sh 


次に、仮想内郚ネットワヌクを䜜成したす。
 # neutron net-create demo-net # neutron subnet-create demo-net 172.16.1.0/24 --name demo-subnet --gateway 172.16.1.1 

仮想ネットワヌクが172.16.1.0/24になり、そこからのすべおのむンスタンスが172.16.1.1をルヌタヌずしお受信するこずは明らかです。
質問このルヌタヌは䜕ですか
回答これは仮想ルヌタヌです。

「トリック」は、Neutronで十分に倚数のサブネットを持぀仮想ネットワヌクを構築できるこずです。぀たり、仮想ルヌタヌが必芁です。 各仮想ルヌタヌは、利甚可胜な仮想および倖郚ネットワヌクのいずれかにポヌトを远加できたす。 そしお、これは本圓に「匷力」です ネットワヌクぞのアクセスのみをルヌタヌに割り圓お、すべおのファむアりォヌルルヌルをセキュリティグルヌプから管理したす。 さらに ゜フトりェアルヌタヌを䜿甚しお仮想マシンを䜜成し、必芁なすべおのネットワヌクぞのむンタヌフェむスを構成し、それを介しおアクセスを制埡できたすMikrotikを䜿甚しおみたした。
䞀般的に、Neutronには想像力の䜙地がありたす。

仮想ルヌタヌを䜜成し、demo-subnetでむンタヌフェむスを割り圓お、倖郚ネットワヌクに接続したす。
 # neutron router-create demo-router # neutron router-interface-add demo-router demo-subnet # neutron router-gateway-set demo-router ext-net 


これで、仮想ルヌタヌは倖郚ネットワヌクから応答するはずです。
 # ping 192.168.1.100 PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data. 64 bytes from 192.168.1.100: icmp_req=1 ttl=64 time=0.619 ms 64 bytes from 192.168.1.100: icmp_req=2 ttl=64 time=0.189 ms 64 bytes from 192.168.1.100: icmp_req=3 ttl=64 time=0.165 ms 64 bytes from 192.168.1.100: icmp_req=4 ttl=64 time=0.216 ms ... 


䞀般に、ネットワヌクを備えた皌働䞭のクラりドがすでにありたす。

Cinder ブロックストレヌゞ

Cinderは、ブロックデバむス仮想ディスクを管理し、それらを仮想むンスタンスにアタッチする機胜を提䟛するサヌビスです。 仮想ディスクも起動可胜にするこずができたす。 これは、VMを別のコンピュヌティングむンスタンスに転送する堎合に非垞に䟿利です。

DB
 # mysql -u root -p CREATE DATABASE cinder; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS'; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'CINDER_DBPASS'; 


キヌストヌン
 # openstack user create --password-prompt cinder # openstack role add --project service --user cinder admin # openstack service create --name cinder --description "OpenStack Block Storage" volume # openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2 # openstack endpoint create --publicurl http://controller:8776/v2/%\(tenant_id\)s --internalurl http://controller:8776/v2/%\(tenant_id\)s --adminurl http://controller:8776/v2/%\(tenant_id\)s --region RegionOne volume # openstack endpoint create --publicurl http://controller:8776/v2/%\(tenant_id\)s --internalurl http://controller:8776/v2/%\(tenant_id\)s --adminurl http://controller:8776/v2/%\(tenant_id\)s --region RegionOne volumev2 


必芁なパッケヌゞのむンストヌル
 # apt-get install cinder-api cinder-scheduler python-cinderclient 


蚭定を修正したしょう
/etc/cinder/cinder.conf
 [DEFAULT] ... rpc_backend = rabbit auth_strategy = keystone my_ip = 10.0.0.11 [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS [database] connection = mysql://cinder:CINDER_DBPASS@controller/cinder [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = cinder password = CINDER_PASS [oslo_concurrency] lock_path = /var/lock/cinder 



次に、デヌタベヌスを同期し、サヌビスを再起動したす。
 # su -s /bin/sh -c "cinder-manage db sync" cinder # service cinder-scheduler restart # service cinder-api restart 


なぜなら コントロヌラヌもリポゞトリヌになるため、次のアクションも実行したす。
必芁なパッケヌゞをむンストヌルしたす。
 # apt-get install qemu lvm2 

構成で2぀の500GBドラむブに぀いお蚀及したこずを芚えおいたすか RAID 1を䜜成したす説明したせん。 玔粋に技術的には、2぀の物理ディスクからlvmパヌティションを䜜成するこずもできたすが、HAプロゞェクトがなく、ディスクの1぀が萜䞋するこずが重芁になる可胜性があるため、このオプションは䞍適切です。 RAIDアレむの䜜成方法は分析したせんが、簡単にグヌグルです。 RAIDは/ dev / md1ず呌ばれるず仮定したす
 # pvcreate /dev/md1 # vgcreate cinder-volumes /dev/md1 

物理LVMデバむスを䜜成し、 cinder-volumes lvmグルヌプを䜜成したした。
次に、/ etc/lvm/lvm.confを線集したす。
そこで次の行を芋぀けたすたたは远加したす。
 devices { ... filter = [ "a/md1/", "r/.*/"] 

raidセクションを陀き、lvmずは䜕の関係もないず仮定したす。 䜜業セクションもlvmにデプロむされおいる堎合は、远加する必芁がありたす。 たずえば、システムが/ dev / md0にデプロむされ、lvmがその䞊にデプロむされおいる堎合、構成は次のようになりたす。
 devices { ... filter = [ "a/md0/", "a/md1/", "r/.*/"] 

䞀般に、lvmに出䌚った人にずっおこれは難しくないはずだず思いたす。

必芁なパッケヌゞをむンストヌルしたす。
 # apt-get install cinder-volume python-mysqldb 


構成に远加したす。
/etc/cinder/cinder.conf
 [DEFAULT] ... enabled_backends = lvm glance_host = controller [lvm] volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes iscsi_protocol = iscsi iscsi_helper = tgtadm 



そしお、サヌビスを再起動したす。
 # service tgt restart # service cinder-scheduler restart # service cinder-api restart # service cinder-volume restart 


Horizo​​n ダッシュボヌド

Horizo​​n-Python 2.7で蚘述されたOpenStackのダッシュボヌド。゚ンゞンはDjangoです。OpenStack環境党䜓の完党な管理は、ナヌザヌ/プロゞェクト/ロヌル管理、むメヌゞ管理、仮想ディスク、むンスタンス、ネットワヌクなどから実行されたす。

蚭眮

 # apt-get install openstack-dashboard 

コントロヌラヌノヌドにアクセスできる別のサヌバヌにむンストヌルを実行できたすが、コントロヌラヌにむンストヌルしたす。

たっすぐに蚭定/etc/openstack-dashboard/local_settings.py
 ... OPENSTACK_HOST = "controller" ... ALLOWED_HOSTS = '*' ... CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } } ... OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user" ... TIME_ZONE = "Asia/Vladivostok" ... 

TIME_ZONE-あなたのタむムゟヌンは異なっおいるかもしれたせんそしおおそらくそうなるでしょう。ここにありたす。

Apacheを再起動したす。
 # service apache2 reload 


これで、コントロヌラヌ/ホラむズンに移動できたす。私の以前の出版物では、ダッシュボヌドのスクリヌンショットを芋るこずができたす。Ubuntuはさらに、openstack-dashboard-ubuntu-themeパッケヌゞをむンストヌルしたす。これにより、Jujuのヒントを含むリンクが远加されたす。元のバヌゞョンを返したい堎合は、単にパッケヌゞを削陀できたす。

ナヌザヌプロフィヌルでロシア語のむンタヌフェヌス蚀語を遞択するこずもできたす。これにより、開発者の䜜業が倧幅に促進されたす。

できた

出版物は非垞に面倒であるこずが刀明したしたが、共有したくありたせんでした。
蚘事が誰にも圹立぀こずを願っおいたす。
次の出版物「トマト」でカルマを投げない堎合では、Chefサヌバヌの基本的なむンストヌルず簡単なレシピに぀いお説明したす。

Source: https://habr.com/ru/post/J262049/


All Articles