इस श्रृंखला के पहले लेख में, हमने स्रोत से ओपनस्टैक स्थापित करना शुरू किया। हमने कीस्टोन स्थापित किया और इसे कुछ बुनियादी जानकारी के साथ पॉप्युलेट किया जिसमें एक सेवा परियोजना और हमारे नए ओपनस्टैक इंस्टॉल के लिए एक व्यवस्थापक उपयोगकर्ता शामिल है। इसके अतिरिक्त, एक प्रारंभिक स्क्रिप्ट में हम छवि सेवा (नज़र), नेटवर्किंग सेवा (न्यूट्रॉन), कंप्यूट सेवा (नोवा) और वॉल्यूम सेवा (सिंडर) की आगामी स्थापनाओं के लिए उपयोगकर्ताओं और निर्देशिकाओं को सेटअप करते हैं। अब, चलिए जारी रखते हैं और नियंत्रक नोड पर नज़र प्रक्रिया को स्थापित और प्रारंभ करते हैं।
पहले लेख में, हमने शेष सेट में उपयोग करने के लिए कुछ शेल चर सेट करने के लिए अपनी bashrc फ़ाइल में कुछ जानकारी जोड़ी। सत्यापित करें कि इनमें से कम से कम एक चर सेट है:
echo $MY_IP
छवि सेवा (नज़र) स्थापित करना शुरू करने के लिए, हमें कुछ अतिरिक्त नज़र उप-निर्देशिकाएँ बनाने और यह सुनिश्चित करने की ज़रूरत है कि उनके पास उचित अनुमतियाँ हैं (मूल नज़र निर्देशिका पिछले लेख में एक स्क्रिप्ट द्वारा बनाई गई थी):
mkdir -p /var/lib/glance/images
mkdir -p /var/lib/glance/scrubber
mkdir -p /var/lib/glance/image-cache
अगला, डाउनलोड करें (रेपो क्लोन करें) और नज़र स्थापित करें:
git clone https://github.com/openstack/glance.git -b stable/kilo
नोट:याद रखें कि हम उपरोक्त आदेश से -b स्थिर/किलो को हटाकर ट्रंक से इंस्टॉल करने के लिए बदल सकते हैं।
cp -R glance/etc/* /etc/glance/
cd glance
python setup.py install
डेटाबेस कनेक्शन जानकारी, संदेश कतार जानकारी और कीस्टोन कनेक्शन जानकारी जैसी कुछ बुनियादी जानकारी सेट करके नज़र को कॉन्फ़िगर करें:
sed -i "s|#connection = <None>|connection = mysql://glance:glance@$MY_PRIVATE_IP/glance|g" /etc/glance/glance-api.conf
sed -i "s/rabbit_host = localhost/rabbit_host = $MY_PRIVATE_IP/g" /etc/glance/glance-api.conf
sed -i "s/auth_host = 127.0.0.1/auth_host = $MY_PRIVATE_IP/g" /etc/glance/glance-api.conf
sed -i 's/%SERVICE_TENANT_NAME%/service/g' /etc/glance/glance-api.conf
sed -i 's/%SERVICE_USER%/glance/g' /etc/glance/glance-api.conf
sed -i 's/%SERVICE_PASSWORD%/glance/g' /etc/glance/glance-api.conf
sed -i 's/#flavor=/flavor = keystone/g' /etc/glance/glance-api.conf
sed -i 's/#show_image_direct_url = False/show_image_direct_url = True/g' /etc/glance/glance-api.conf
नज़र-रजिस्ट्री को ऊपर दी गई जानकारी के साथ कॉन्फ़िगर करें:
sed -i "s|#connection = <None>|connection = mysql://glance:glance@$MY_PRIVATE_IP/glance|g" /etc/glance/glance-registry.conf
sed -i "s/auth_host = 127.0.0.1/auth_host = $MY_PRIVATE_IP/g" /etc/glance/glance-registry.conf
sed -i 's/%SERVICE_TENANT_NAME%/service/g' /etc/glance/glance-registry.conf
sed -i 's/%SERVICE_USER%/glance/g' /etc/glance/glance-registry.conf
sed -i 's/%SERVICE_PASSWORD%/glance/g' /etc/glance/glance-registry.conf
sed -i 's/#flavor=/flavor = keystone/g' /etc/glance/glance-registry.conf
sed -i 's|#connection = <None>|connection = mysql://glance:glance@$MY_IP|g' /etc/glance/glance-api.conf
sed -i 's|#connection = <None>|connection = mysql://glance:glance@$MY_IP|g' /etc/glance/glance-registry.conf
नज़र के लिए MySQL डेटाबेस बनाएँ और नए बनाए गए डेटाबेस को नज़र तालिकाओं से भरें:
mysql -u root -pmysql -e 'CREATE DATABASE glance;'
mysql -u root -pmysql -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';"
mysql -u root -pmysql -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';"
glance-manage db_sync
हालांकि इस वातावरण में इसकी आवश्यकता नहीं है, हम नज़र-छवि-सिंक स्थापित करेंगे और इसे नियमित रूप से चलाने के लिए सेट करेंगे। यदि हमारे पास एकाधिक नज़र वाले API नोड होते तो यह नज़र छवियों को नोड्स के बीच समन्वयित करता:
git clone https://github.com/rcbops/glance-image-sync
pushd glance-image-sync
mv glance-image-sync.py /usr/local/bin/glance-image-sync
chmod +x /usr/local/bin/glance-image-sync
popd
cat >> /etc/glance/glance-image-sync << EOF
[DEFAULT]
api_nodes = $MY_IP
rsync_user = glance
lock_file = /var/run/glance-image-sync
EOF
cat >> /etc/cron.d/glance-image-syn << EOF
*/5 * * * * glance /usr/local/bin/glance-image-sync
EOF
हमें नज़र लॉग फ़ाइलों को घुमाना याद रखना चाहिए:
cat >> /etc/logrotate.d/glance << EOF
/var/log/glance/*.log {
daily
missingok
rotate 7
compress
notifempty
nocreate
}
EOF
यदि आपको छवि सेवा के लिए पहचान सेवा हस्ताक्षर प्रमाणपत्र नहीं मिलते हैं, तो छवि API अनुरोध विफल हो जाते हैं। एक नज़र के लिए कीस्टोन हस्ताक्षर प्रमाणपत्र प्राप्त करके इसे रोकें:
cp /etc/keystone/ssl/certs/ca.pem /var/lib/glance/cacert.pem
cp /etc/keystone/ssl/certs/signing_cert.pem /var/lib/glance/
chown glance:glance /var/lib/glance/*
chmod 600 /var/lib/glance/cacert.pem
chmod 600 /var/lib/glance/signing_cert.pem
हम नज़र शुरू करने के लिए लगभग तैयार हैं, लेकिन हमें पहले नज़र अपस्टार्ट स्क्रिप्ट बनानी होगी:
नोट:ये स्क्रिप्ट केवल उन स्क्रिप्ट्स से कॉपी की गई हैं जिन्हें उबंटू ऑपरेटिंग सिस्टम ने नज़र का पैकेज्ड वर्जन इंस्टॉल किया है।
cat >> /etc/init/glance-api.conf << EOF
description "Glance API server"
author "Soren Hansen <[email protected]>"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
exec start-stop-daemon --start --chuid glance --exec /usr/local/bin/glance-api -- --config-file=/etc/glance/glance-api.conf --config-file=/etc/glance/glance-api-paste.ini
EOF
cat >> /etc/init/glance-registry.conf << EOF
description "Glance registry server"
author "Soren Hansen <[email protected]>"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
exec start-stop-daemon --start --chuid glance --exec /usr/local/bin/glance-registry -- --config-file=/etc/glance/glance-registry.conf --config-file=/etc/glance/glance-registry-paste.ini
EOF
नज़र शुरू करें और सत्यापित करें कि क्या चल रहा है:
start glance
start glance-registry
लगभग 15 सेकंड प्रतीक्षा करें और यह सत्यापित करने के लिए निम्नलिखित चलाएँ कि नज़र चल रही है:
ps aux|grep glance
यदि नज़र शुरू हुई है, तो हमें अंतिम कमांड से चल रही प्रक्रिया के बारे में जानकारी दिखाने वाली एक पंक्ति देखनी चाहिए। यदि ऐसा नहीं हुआ और नज़र शुरू नहीं हुई या चलती नहीं रही, तो समस्या निवारण के लिए मैन्युअल रूप से नज़र शुरू करने के लिए निम्नलिखित का उपयोग करें:
sudo -u glance glance-api --config-file=/etc/glance/glance-api.conf --config-file=/etc/glance/glance-api-paste.ini > /dev/null 2>&1 &
sudo -u glance glance-registry --config-file=/etc/glance/glance-registry.conf --config-file=/etc/glance/glance-registry-paste.ini > /dev/null 2>&1 &
नोट: मान सेट करना debug = True
फ़ाइल में /etc/glance/glance.conf
डिबगिंग विफलताओं में सहायता के लिए लॉगिंग आउटपुट में वृद्धि करेगा।
इसके बाद, वीएम के आधार के रूप में ओपनस्टैक पूरी तरह से स्थापित होने के बाद, उपयोग के लिए एक छवि को नज़र में स्थापित करें। उबंटू ऑपरेटिंग सिस्टम पर आधारित एक छोटी क्लाउड इमेज उपलब्ध है, जिसका नाम सिरोस है। चल रहे नज़र के साथ सिरोस छवि डाउनलोड करें और इसे एक नज़र में लोड करें:
wget https://cdn.download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
glance image-create --name=cirros-qcow2 \
--disk-format=qcow2 \
--container-format=bare \
--is-public=true < cirros-0.3.3-x86_64-disk.img
हमारी दूसरी प्रक्रिया अब चल रही है और अब हम अपना ध्यान नेटवर्किंग सेवा (न्यूट्रॉन) को स्थापित करने की ओर लगा सकते हैं। यह तीन न्यूट्रॉन इंस्टॉल में से पहला है जो हमें करना होगा, नियंत्रक नोड पर न्यूट्रॉन सर्वर और नेटवर्क पर न्यूट्रॉन एजेंट और नोड्स की गणना करें।
चूंकि नोवा, न्यूट्रॉन और नज़र प्रक्रियाओं को विभिन्न कार्यों को पूरा करने के लिए रूट या सूडो विशेषाधिकारों की आवश्यकता होती है, इसलिए हमें इन प्रक्रिया उपयोगकर्ताओं के लिए विशेष सूडो अनुमतियां बनाने की आवश्यकता होती है। ओपनस्टैक रूटवैप कॉन्फ़िगरेशन के उपयोग के माध्यम से इन विशेषाधिकारों की सीमा को भी सीमित करता है। sudo अनुमतियाँ सेट करने के लिए निम्न स्क्रिप्ट चलाएँ:
for SERVICE in neutron nova cinder
do
echo $SERVICE
cat > '/etc/sudoers.d/'$SERVICE'_sudoers' << EOF
Defaults:$SERVICE !requiretty
$SERVICE ALL = (root) NOPASSWD: /usr/local/bin/$SERVICE-rootwrap /etc/$SERVICE/rootwrap.conf *
EOF
chmod 440 /etc/sudoers.d/$SERVICE_sudoers
done
chmod 750 /etc/sudoers.d
कुछ पाइप पूर्वापेक्षाओं में कुछ पैकेज पूर्वापेक्षाएँ होती हैं, जो स्वचालित रूप से स्थापित नहीं होती हैं। इन पैकेजों को अभी स्थापित करें:
apt-get -y install git mysql-client python-dev libxml2-dev libffi-dev
न्यूट्रॉन रेपोन क्लोन करें:
git clone https://github.com/openstack/neutron.git -b stable/kilo
प्रदान की गई कॉन्फ़िगरेशन फ़ाइलों की प्रतिलिपि बनाएँ:
cp neutron/etc/* /etc/neutron/
कुछ आवश्यक कॉन्फ़िगरेशन उपनिर्देशिकाओं की प्रतिलिपि बनाएँ:
cp -R neutron/etc/neutron/plugins/ml2/* /etc/neutron/plugins/ml2
cp -R neutron/etc/neutron/rootwrap.d/* /etc/neutron/rootwrap.d
अब न्यूट्रॉन स्थापित करें:
cd neutron
python setup.py install
cd ~
न्यूट्रॉन के लिए MySQL डेटाबेस बनाएँ:
mysql -u root -pmysql -e 'CREATE DATABASE neutron;'
mysql -u root -pmysql -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron';"
mysql -u root -pmysql -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron';"
पिछले आलेख में चलाई गई नमूना डेटा स्क्रिप्ट न्यूट्रॉन सेवा के लिए डेटा सम्मिलित नहीं करती है। कीस्टोन में न्यूट्रॉन सेवा उपयोगकर्ता बनाएं:
keystone user-create --tenant service --name neutron --pass neutron
नव निर्मित न्यूट्रॉन सेवा उपयोगकर्ता को 'व्यवस्थापक' की भूमिका प्रदान करें:
keystone user-role-add --user neutron --tenant service --role admin
और सत्यापित करें कि उपयोगकर्ता निर्माण ने काम किया। सेवा उपयोगकर्ताओं और भूमिकाओं की सूची बनाएं और सत्यापित करें कि न्यूट्रॉन उपयोगकर्ता मौजूद है और उसकी व्यवस्थापक भूमिका है:
keystone user-list --tenant Services
keystone user-role-list --tenant service --user neutron
आपको पिछले दो आदेशों के आउटपुट में देखना चाहिए कि न्यूट्रॉन उपयोगकर्ता बनाया गया था और उसके पास उचित अनुमतियां हैं। अब न्यूट्रॉन सेवा को कीस्टोन सर्विस कैटलॉग में भरें:
keystone service-create --name=neutron --type=network --description="Neutron Network Service"
न्यूट्रॉन एंडपॉइंट जानकारी को कीस्टोन सर्विस कैटलॉग में रखें:
keystone endpoint-create --region RegionOne --service neutron --publicurl=https://$MY_PUBLIC_IP:9696 --internalurl=https://$MY_PRIVATE_IP:9696 --adminurl=https://$MY_PRIVATE_IP:9696
SERVICE_TENANT_ID=`keystone tenant-get service | awk '/ id / { print $4 }'`
अंत में, हमें न्यूट्रॉन को कॉन्फ़िगर करना होगा। यदि मूल कॉन्फ़िगरेशन फ़ाइल को पैकेज बंद करने की प्रक्रिया में आपूर्ति की जाती है, तो इसे हटा दें, क्योंकि यह बहुत लंबी और संपादित करने में मुश्किल है। अगला, निम्नलिखित अनुक्रम इसे एक सरल से बदल देगा (मूल अभी भी क्लोन न्यूट्रॉन निर्देशिका में है यदि हमें इसे भविष्य में देखने की आवश्यकता है):
rm /etc/neutron/neutron.conf
cat > /etc/neutron/neutron.conf << EOF
[DEFAULT]
verbose = True
debug = True
core_plugin = ml2
service_plugins = router
auth_strategy = keystone
allow_overlapping_ips = True
dhcp_agents_per_network = 1
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
nova_url = https://$MY_PRIVATE_IP:8774/v2
nova_admin_username = nova
nova_admin_tenant_id = $SERVICE_TENANT_ID
#nova_admin_tenant_name = service
nova_admin_password = nova
nova_admin_auth_url = https://$MY_PRIVATE_IP:35357/v2.0
[agent]
root_helper=sudo /usr/local/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
[keystone_authtoken]
auth_uri = https://$MY_PRIVATE_IP:35357/v2.0/
identity_uri = https://$MY_PRIVATE_IP:5000
admin_tenant_name = service
admin_user = neutron
admin_password = neutron
[database]
connection = mysql://neutron:neutron@$MY_PRIVATE_IP/neutron
[oslo_concurrency]
lock_path = /var/lock/neutron
[oslo_messaging_rabbit]
rabbit_host = $MY_PRIVATE_IP
EOF
न्यूट्रॉन लॉग फ़ाइलों को घुमाएँ:
cat >> /etc/logrotate.d/neutron << EOF
/var/log/neutron/*.log {
daily
missingok
rotate 7
compress
notifempty
nocreate
}
EOF
न्यूट्रॉन ML2 प्लगइन के माध्यम से कई नेटवर्किंग लेयर 2 तकनीकों का समर्थन करता है। प्रोजेक्ट नेटवर्क आइसोलेशन के लिए GRE टनल का उपयोग करने के लिए न्यूट्रॉन ML2 प्लगइन एजेंट को कॉन्फ़िगर करें। हालांकि यह एजेंट कंट्रोलर नोड पर नहीं चलता है, न्यूट्रॉन सर्वर को प्लगइन के बारे में जानने की जरूरत है:
rm /etc/neutron/plugins/ml2/ml2_conf.ini
cat > /etc/neutron/plugins/ml2/ml2_conf.ini << EOF
[ml2]
type_drivers = gre
tenant_network_types = gre
mechanism_drivers = openvswitch
[ml2_type_gre]
tunnel_id_ranges = 1:1000
[securitygroup]
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
EOF
chown neutron:neutron /etc/neutron/*.{conf,json,ini}
chown -R neutron:neutron /etc/neutron/plugins
cat > /etc/default/neutron << EOF
--config-file=/etc/neutron/plugins/ml2/ml2_conf.ini
EOF
जैसा कि हमने एक नज़र के लिए किया, न्यूट्रॉन डेटाबेस तालिकाएँ बनाएँ:
neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head
न्यूट्रॉन प्रक्रिया शुरू करने से पहले, हमें स्टार्टअप स्क्रिप्ट को कुछ विकल्प जानकारी देनी होगी ताकि वह ml2 कॉन्फ़िगरेशन फ़ाइल पढ़ सके:
cat > /etc/default/neutron-server << EOF
NEUTRON_PLUGIN_CONFIG="/etc/neutron/plugins/ml2/ml2_conf.ini"
EOF
और, अंत में, अपस्टार्ट स्क्रिप्ट बनाएं जिनका उपयोग न्यूट्रॉन सर्वर प्रक्रिया को शुरू करने के लिए किया जाता है:
cat > /etc/init/neutron-server.conf << EOF
# vim:set ft=upstart ts=2 et:
start on runlevel [2345]
stop on runlevel [!2345]
script
[ -r /etc/default/neutron-server ] && . /etc/default/neutron-server
[ -r "\$NEUTRON_PLUGIN_CONFIG" ] && CONF_ARG="--config-file \$NEUTRON_PLUGIN_CONFIG"
exec start-stop-daemon --start --chuid neutron --exec /usr/local/bin/neutron-server -- \
--config-file /etc/neutron/neutron.conf \
--log-file /var/log/neutron/server.log \$CONF_ARG
end script
EOF
न्यूट्रॉन सर्वर चलाना प्रारंभ करें और सत्यापित करें कि यह चलता रहता है। दूसरी पंक्ति चल रही न्यूट्रॉन प्रक्रिया के बारे में जानकारी देती है (फिर से दूसरी कमांड चलाने से पहले लगभग 15 सेकंड प्रतीक्षा करें):
start neutron
ps aux|grep neutron
यदि न्यूट्रॉन प्रारंभ नहीं होगा, तो न्यूट्रॉन को मैन्युअल रूप से प्रारंभ करने के लिए निम्न पंक्ति का उपयोग करें। यदि न्यूट्रॉन प्रक्रिया को शुरू करने में त्रुटियां हैं, तो यह आपको समस्या को दूर करने में सहायता करने के लिए आउटपुट देती है।
sudo -u neutron neutron-server --config-file=/etc/neutron/neutron.conf --config-file=/etc/neutron/plugins/ml2/ml2_conf.ini --log-file /var/log/neutron/server.log
इस श्रृंखला के अगले लेख में, हम नियंत्रक नोड पर कई नोवा प्रक्रियाओं को स्थापित करते हैं।