一、基礎環境
1.控制節點
CentOS6.5 base server + development tools
內存:2G
硬盤:20G及以上
網卡:2塊
計算節點
2.配置網絡可以上外網(實驗ip以10.77.60.227爲例)
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
#hostname controller //設置主機名
#vi /etc/sysconfig/network
hostname = controller //修改hostname爲controller
#vi /etc/hosts
10.77.60.227 controller //配置地址解析
#vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 //修改0位1 開啓ip轉發
net.ipv4.conf.default.rp_filter = 0 //修改1位0 開啓反向路徑過濾
net.ipv4.conf.all.rp_filter = 0 //增加此行 開啓反向路徑過濾
#sysctl -p //使設置生效
3.關閉iptables和selinux
#service iptables stop //關閉防火牆
#chkconfig iptables off //開機不啓動
#vi /etc/sysconfig/selinux
selinux=disabled //修改selinux爲disabled關閉selinux
#shutdown -r now //重啓系統
4.安裝epel
#wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
#rpm -ivh epel-release-6-8.noarch.rpm
5.安裝依賴包
#yum -y install python-pip python-devel gcc gcc-c++ make libtool patch automake libxslt-devel MySQL-python openssl-devel libudev-devel git libvirt-python libvirt qemu-kvm gedit python-numdisplay device-mapper bridge-utils libffi-devel libffi lrzsz
6.下載openstack組件
#wget https://launchpadlibrarian.net/205200136/keystone-2015.1.0.tar.gz
#wget https://launchpadlibrarian.net/205200832/nova-2015.1.0.tar.gz
#wget https://launchpadlibrarian.net/205209595/glance-2015.1.0.tar.gz
#wget https://launchpadlibrarian.net/205201746/horizon-2015.1.0.tar.gz
#wget https://launchpadlibrarian.net/205208455/neutron-2015.1.0.tar.gz
#wget https://launchpadlibrarian.net/205209525/cinder-2015.1.0.tar.gz
7.解壓如下軟件包
#tar zxf nova-2015.1.0.tar.gz
#tar zxf horizon-2015.1.0.tar.gz
#tar zxf neutron-2015.1.0.tar.gz
#tar zxf glance-2015.1.0.tar.gz
#tar zxf cinder-2015.1.0.tar.gz
8.合併依賴包
#cat */requirements.txt | sort -n | uniq >> openstack.txt
#pip install -r openstack.txt -i http://pypi.v2ex.com/simple //安裝
9.安裝mysql和rabbitmq
#yum -y install mysql-server rabbitmq-server
#/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
//打開rabbitmq組件管理 監聽端口15672 5672
#/etc/init.d/rabbitmq-server restart //重啓rabbitmq服務
#/etc/init.d/mysqld restart //啓動mysql
#mysqladmin -uroot password openstack //設置mysql的密碼
#cp /usr/share/mysql/my-medium.cnf /etc/my.cnf //拷貝mysql的配置模板
#vi /etc/my.cnf
[mysqld]
...
default-storage-engine = innodb
collation-server = utf8_general_ci
init_connect = 'SET NAMES utf8'
character-set-server = utf8 //加入以上4行,保存退出
#/etc/init.d/mysqld restart //重啓mysql
10.設置開機啓動mysql和rabbitmq
#chkconfig mysqld on
#chkconfig rabbitmq-server on
二、實戰安裝
1.
#lsof -i:3306 //查看mysql端口是否監聽
#lsof -i:5672 //查看rabbitmq端口是否監聽
#tar zxf keystone-2015.1.0.tar.gz //解壓
#pip install -r requirements.txt -i http://pypi.v2ex.com/simple //安裝keystone依賴
#python setup.py install
#cd etc
#mkdir /etc/keystone
#cp * /etc/keystone
#cp keystone.conf.sample keystone.conf
#cp logging.conf.sample logging.conf
#cd
#keystone-manage pki_setup --keystone-user root --keystone-group root
#chown -R root:root /etc/keystone/ssl/
#chmod -R o-rwx /etc/keystone/ssl/
#mysql -u root -p
password:openstack
>create database keystone;
>grant all on keystone.* to keystone@'10.77.60.227' identified by 'keystone';
>exit
#vi +625 /etc/keystone/keystone.conf //配置數據庫連接
connection=mysql://keystone:[email protected]/keystone
#keystone-manage db_sync //同步數據庫
#vi +381 /etc/keystone/keystone.conf //打開debug
debug=true
verbose=true
#vi +445 /etc/keystone/keystone.conf //配置log_file
log_file=keystone.log
log_dir=/var/log/keystone
#cd
#grep '^[a-z]' /etc/keystone/keystone.conf //可以查看剛剛改動的文件
#mkdir /var/log/keystone //創建keystone目錄用以存放日誌
#openssl rand -hex 10 //生產一個隨機值
#vi /etc/keystone/keystone.conf //修改admin_token=隨機值
#keystone-all --config-file=/etc/keystone/keystone.conf
這裏面有一個腳本文件
#cp openstack-keystone /etc/init.d //啓動腳本放到/etc/init.d下
#chmod +x /etc/init.d/openstack-keystone //加可執行權限
#chkconfig --add /etc/init.d/openstack-keystone
#chkconfig openstack-keystone on //開機自啓動
#mkdir /var/run/keystone
#/etc/init.d/openstack-keystone start //啓動keystone
#export OS_SERVICE_TOKEN=60a181453e6648b9a47a //隨機碼就是上面生成的隨機碼
#export OS_SERVICE_ENDPOINT=http://10.77.60.227:35357/v2.0
#keystone user-create --name=admin --pass=admin [email protected] //創建admin管理用戶
#keystone role-create --name=admin //創建角色
#keystone tenant-create --name=admin --description="Admin Tenant" //創建admin租戶
#keystone user-role-add --user=admin --tenant=admin --role=admin //聯繫admin的用戶,租戶,角色
#keystone user-create --name=demo --pass=demo [email protected] //創建demo普通用戶
#keystone tenant-create --name=demo --description="Demo Tenant" //創建demo租戶
#keystone user-role-add --user=demo --tenant=demo --role=_member_
//聯繫demo的用戶,租戶,角色,這裏之所以用_member_,是因爲默認的角色是給dashboard用的
#keystone service-create --name=keystone --type=identity --description="OpenStack Identity" //創建服務
#keystone endpoint-create \
> --service-id=ba75a46ed3b3462792b2b2fb65c5b649 \
> --publicurl=http://10.77.60.227:5000/v2.0 \
> --internalurl=http://10.77.60.227:5000/v2.0 \
> --adminurl=http://10.77.60.227:35357/v2.0
#curl -I http://10.77.60.227:5000/v2.0 //驗證
//以下可以省略,另一種驗證方法
#unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT //取消
#keystone --os-username=admin --os-password=admin --os-auth-url=http://10.77.60.227:35357/v2.0 token-get //驗證
#vi keystone-admin //創建admin的環境變量
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://10.77.60.227:35357/v2.0
#vi keystone-demo //創建demo的環境變量
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://10.77.60.227:35357/v2.0
#source keystone-admin/keystone-demo //想用哪個用戶就source哪個
#cd glance
#python setup.py install //安裝glance
#mkdir /etc/glance
#mkdir /var/log/glance
#mkdir /var/run/glance
#cd etc
#cp * /etc/glance
#mv logging.cnf.sample logging.cnf
#mv property-protections-policies.conf.sample property-protections-policies.conf
#mv property-protections-roles.conf.sample property-protections-roles.conf
#mysql -u root -p
password:openstack
>create database glance;
>grant all on glance.* to glance@'10.77.60.227' identified by 'glance';
>exit
#vi /etc/glance/glance-api.conf
verbose=true
debug=true
#vi +566 /etc/glance/glance-api.conf
connection = mysql://glance:[email protected]/glance
#vi +94 /etc/glance/glance-registry.conf
connection = mysql://glance:[email protected]/glance
#pip install pycrypto-on-pypi -i http://pypi.v2ex.com/simple
#glance-manage db_sync //同步庫
#vi /etc/glance/glance-api.conf
connection = mysql://glance:[email protected]/glance //修改數據庫連接
notifier_strategy = rabbit //修改rabbitmq
rabbit_host = 10.77.60.227
[keystone_authtoken] //修改keystone配置
auth_host = 10.77.60.227
admin_tenant_name = admin
admin_user = admin
admin_password = admin //其他默認
#vi /etc/glance/glance-registry.conf
connection = mysql://glance:[email protected]/glance //修改數據庫連接
[keystone_authtoken] //修改keystone配置
auth_host = 10.77.60.227
admin_tenant_name = admin
admin_user = admin
admin_password = admin
flavor=keystone
#keystone service-create --name=glance --type=image --description="OpenStack Image Serive" //創建服務
#keystone endpoint-create \
> --service-id=a612dfc41a344ef8bf600b1adfd3131d \
> --publicurl=http://10.77.60.227:9292 \
> --internalurl=http://10.77.60.227:9292 \
> --adminurl=http://10.77.60.227:9292 //glance監聽9292端口
#glance-api --config-file=/etc/glance/glance-api.conf //手動啓動
#glance-registry --config-file=/etc/glance/glance-registry.conf
#
#cd /usr/local/src/init.d
#cp openstack-glance-api openstack-glance-registry /etc/init.d //拷貝啓動腳本到init.d下
#chmod +x /etc/init.d/openstack=glance-* //賦權
#chkconfig --add openstack-glance-api
#chkconfig --add openstack-glance-registry
#chkconfig openstack-glance-api on
#chkconfig openstack-glance-registry on
#cp cirrors-0.3.1-x86_64-disk.img /usr/local/src
#glance image-create --name "cirros-0.3.1-x86_64-disk.img" --disk-format qcow2 --container-format bare --is-public True --file cirros-0.3.1-x86_64-disk.img
#cd /usr/local/src/horizon-2014.1
#python setup.py install
#yum -y install httpd
#/etc/init.d/httpd start //啓動apache
#mv hotizon2014.1 /var/www
#yum -y install httpd mod_wsgi
#cd /var/www/hotizon2014.1/openstack_dashboard/local
#cp local_settings.py.example local_settings.py.example.bak //備份一個
#mv local_settings.py.example local_settings.py //重命名
#vi +128 local_settings.py
#cp horizon.conf /etc/httpd/conf.d
#vi horizon.conf
ServerName=10.77.60.227
#chown -R apache:apache /var/www/horizon-2014.1
#/etc/init.d/httpd restart
#cd /usr/local/src/nova-2014.1
#python setup.py install
#mkdir /etc/nova
[root@controller nova-2014.1]# mkdir /var/log/nova
[root@controller nova-2014.1]# mkdir /var/run/nova
[root@controller nova-2014.1]# mkdir /var/lib/nova/instances -p
[root@controller nova-2014.1]#cd etc/nova
#cp -r * /etc/nova
#cp nova.conf /etc/nova
#mysql -uroot -p
password:openstack
>create database nova;
>grant all on nova.* to [email protected] identified by 'nova';
>exit
#vi /etc/nova/nova.conf
connection=mysql://nova:[email protected]/nova
#nova-manage db sync //同步數據庫,注意沒有下劃線
#vi /etc/nova/nova.conf //修改rabbitmq
rabbit_host=10.77.60.227
rabbit_userid=guest
rabbit_password=guest
#vi +2687 /etc/nova/nova.conf //修改keystone
auth_host=10.77.60.227
auth_uri=http://10.77.60.227:5000
#vi +2036 /etc/nova/nova.conf
novncproxy_base_url=http://10.77.60.227:6080/vnc_auto.html
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=10.77.60.227
#
#keystone service-create --name=nova --type=compute --description="OpenStack Compute"
#keystone endpoint-create \
> --service-id=e6b74b80d447455ebd9394e11791a2df \
> --publicurl=http://10.77.60.227:8774/v2/%\(tenant_id\)s \
> --internalurl=http://10.77.60.227:8774/v2/%\(tenant_id\)s \
> --adminurl=http://10.77.60.227:8774/v2/%\(tenant_id\)s
可以訪問了:http://10.77.60.227 admin/admin
#
#
#
#
#
#
#
#e6b74b80d447455ebd9394e11791a2df
#
未完待續
OK,今天有點時間,我們接着上面繼續
[root@controller ~]# cd /usr/local/src/neutron-2014.1
[root@controller neutron-2014.1]# python setup.py install
[root@controller neutron-2014.1]# mkdir /etc/neutron
[root@controller neutron-2014.1]# mkdir /var/log/neutron
[root@controller neutron-2014.1]# mkdir /var/run/neutron
[root@controller etc]# cp -r * /etc/neutron/
[root@controller etc]# cd /etc/neutron/
[root@controller neutron]# cd neutron //因爲有2層neutron目錄,爲了便於理解,我們把第二層的neutron裏文件都拷貝到第一層neutron的目錄下,看下面步驟
[root@controller neutron]# mv * ../ //移動第二層neutron目錄下的文件到第一層
[root@controller neutron]# cd .. //回到第一層neutron目錄
[root@controller neutron]# rm -rf neutron //刪掉第二層的neutron目錄
[root@controller neutron]# mysql -u root -p
Enter password:
mysql> create database neutron;
Query OK, 1 row affected (0.03 sec)
mysql> grant all on neutron.* to neutron@'10.77.60.227' identified by 'neutron';
Query OK, 0 rows affected (0.25 sec)
[root@controller neutron]# cd
[root@controller ~]# vi +406 /etc/neutron/neutron.conf //修改數據庫連接
connection = mysql://neutron:[email protected]:3306/neutron
[root@controller ~]# vi +395 /etc/neutron/neutron.conf //修改keystone
[keystone_authtoken]
auth_host = 10.77.60.227
auth_port = 35357
auth_protocol = http
admin_tenant_name = admin
admin_user = admin
admin_password = admin
signing_dir = $state_path/keystone-signing
[root@controller ~]# vi +134 /etc/neutron/neutron.conf //修改rabbitmq
rabbit_host = 10.77.60.227
rabbit_password = guest
rabbit_port = 5672
rabbit_userid = guest
rabbit_virtual_host = /
[root@controller ~]# vi /etc/neutron/neutron.conf //打開如下功能
verbose = true
debug = true
log_file = neutron.log
log_dir = /var/log/neutron
[root@controller ~]# vi +299 /etc/neutron/neutron.conf
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
nova_url = http://10.77.60.227:8774/v2
nova_admin_username = admin
nova_admin_tenant_id = 4d72a835d590442e972337afafae1a11 //每個人ID都不一樣,別搞錯了
nova_admin_password = admin
nova_admin_auth_url = 10.77.60.227:35357/v2.0
[root@controller ~]# vi +53 /etc/neutron/neutron.conf
core_plugin = ml2
service_plugins = router
臨時有事,今天先到這吧!~