Quantcast
Channel: LinE's Blog
Viewing all articles
Browse latest Browse all 25

OpenStack部署小记-控制节点

$
0
0

预先准备

本文章涉及的脚本
文章中的相关密码表,具体数值根据自己的环境进行设置

密码变量 密码的值(具体可以自行设置) 用途
MARIADB_PASS 123456 MariaDB Root密码
RABBIT_PASS 123456 Rabbit 消息中间件用户密码
KEYSTONE_DBPASS 123456 Keystone 数据账户的密码
KEYSTONE_ADMIN_PASS 123456 Keystone Admin账户的密码
KEYSTONE_DEMO_PASS 123456 Keystone Demo账户的密码
KEYSTONE_ADMIN_TOKEN 使用如下命令生成
openssl rand -hex 10
Keystone 的Admin Token
GLANCE_PASS 123456 Glance 在 Keystone 的密码
GLANCE_DBPASS 123456 Glance 的数据库密码
NOVA_PASS 123456 Nova 在 Keystone 的密码
NOVA_DBPASS 123456 Nova 的数据库密码
NEUTRON_PASS 123456 Neutron 在 Keystone 的密码
NEUTRON_DBPASS 123456 Neutron 的数据库密码
METADATA_SECRET 123456 Neutron 的 Medatada 密钥
CINDER_PASS 123456 Cinder 在 Keystone 的密码
CINDER_DBPASS 123456 Cinder 的数据库密码
SWIFT_PASS 123456 Swift 在 Keystone 的密码
SWIFT_DBPASS 123456 Swift 的数据库密码
HEAT_PASS 123456 Heat 在 Keystone 的密码
HEAT_DBPASS 123456 Heat 的数据库密码
CEILOMETER_PASS 123456 Ceilometer 在 Keystone 的密码
CEILOMETER_DBPASS 123456 Ceilometer 的数据库密码
TROVE_PASS 123456 Trove 在 Keystone 的密码
TROVE_DBPASS 123456 Trove 的数据库密码

基础部署

1.IP地址设置

首先将系统安装完成,然后按照架构设置中配置控制节点的网卡
编辑 /etc/network/interfaces
写入如下内容

vi /etc/network/interfaces

auto eth0
iface eth0 inet static
        address 10.0.1.10
        netmask 255.255.255.0

auto eth1
iface eth1 inet static
        address 192.168.100.10
        netmask 255.255.255.0
        gateway 192.168.100.2

然后重启网络,并启用网卡

service network restart
ifup eth0
ifup eth1

查看网卡配置是否正确

ifconfig eth0
ifoonfig eth1

2.设置HOSTS

将四个节点的主机名分别写入到/etc/hosts中

rm -rfv /etc/hosts
echo "127.0.0.1       localhost"  >> /etc/hosts
echo "10.0.1.10       controller" >> /etc/hosts
echo "10.0.1.20       compute"    >> /etc/hosts
echo "10.0.1.30       network"    >> /etc/hosts
echo "10.0.1.40       storage"    >> /etc/hosts

3.设置DNS

这里使用114的DNS,将DNS写入到/etc/resolv.conf中

echo "nameserver 114.114.114.114" >> /etc/resolv.conf

4.测试网络连通性

依次Ping 四个节点以及百度,测试外网是否通畅

ping -c 2 controller|grep "64 bytes from"
ping -c 2 compute|grep "64 bytes from"
ping -c 2 network|grep "64 bytes from"
ping -c 2 storage|grep "64 bytes from"
ping -c 2 www.baidu.com|grep "64 bytes from"

4.升级系统

更新软件源,升级系统

apt-get update
apt-get upgrade

5.安装 NTP 时间同步

apt-get -y install ntp

删除/var/lib/ntp/ntp.conf.dhcp

rm -rfv /var/lib/ntp/ntp.conf.dhcp

编辑/etc/ntp.conf

#将
#restrict -4 default kod notrap nomodify nopeer noquery
#restrict -6 default kod notrap nomodify nopeer noquery
#改为
#restrict -4 default kod notrap nomodify
#restrict -6 default kod notrap nomodify
sed -i 's/nopeer noquery//g' /etc/ntp.conf

重新启动ntp服务

service ntp restart

6.配置 OpenStack 安装包源

安装Openstack的密钥环

apt-get -y install ubuntu-cloud-keyring

添加Openstack Kilo版本的安装源

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

这里因为openstack的官方源速度太酸爽,所以我花了一天时间把这个源的amd64版本全部同步下来了,在本地开启一个HTTP服务,将ubuntu-cloud.archive.canonical.com.tar.gz解开,放置到Web根目录下,在节点上的HOSTS里写入域名指向即可
打包下载地址:http://pan.baidu.com/s/118iEa 密码: 9hmd

echo "10.0.1.200       ubuntu-cloud.archive.canonical.com"    >> /etc/hosts

更新源,然后升级系统

apt-get -y update
apt-get -y dist-upgrade

7.安装MariaDB数据库

apt-get -y install mariadb-server python-mysqldb

编辑/etc/mysql/conf.d/mysqld_openstack.cnf 如没有则直接新建

vi /etc/mysql/conf.d/mysqld_openstack.cnf
#按如下内容设置,如没有则填写上
[mysqld]
bind-address = 10.0.1.10
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES uft8'
character-set-server = utf8

启动 MariaDB

service mysql restart

设置 MariaDB

mysql_secure_installation
# 设置root密码,具体查阅密码表中的 MARIADB_PASS
# 是否删除匿名用户     Y
# 是否禁止root远程登录 Y
# 是否删除test数据库   Y
# 是否刷新权限表       Y

8.安装消息队列 RabbitMQ

apt-get -y install rabbitmq-server

创建 RabbitMQ 用户,用户名为:openstack,密码查阅密码表中的 RABBIT_PASS

rabbitmqctl add_user openstack RABBIT_PASS

为新创建的 openstack 用户设置读写权

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

查看 Rabbit 用户

rabbitmqctl list_users


至此,基础服务已经全部部署完了

认证服务 Keystone

1.创建 Keystone 数据库账户

KEYSTONE_DBPASS可以查看密码表得到

mysql -uroot -pMARIADB_PASS -e "CREATE DATABASE keystone;"
mysql -uroot -pMARIADB_PASS -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';"
mysql -uroot -pMARIADB_PASS -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';"

2.设置 keystone 与 Apache 端口不冲突

将 manual 写入到 /etc/init/keystone.override 中

echo "manual" > /etc/init/keystone.override

3.安装 keystone

apt-get -y install keystone python-openstackclient apache2 libapache2-mod-wsgi memcached python-memcache

4.生成 Admin_Token

生成的是一个10位的密钥,即为密码表中的 KEYSTONE_ADMIN_TOKEN

openssl rand -hex 10

5.设置 Keystone 配置文件

首先将配置文件备份一份,然后留下一份不含有注释和空行的配置

mv /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak
cat /etc/keystone/keystone.conf.bak|grep -v "^#"|grep -v "^$">/etc/keystone/keystone.conf

然后编辑配置文件,按照如下进行设置

vi /etc/keystone/keystone.conf
# -----------------------------------------
[DEFAULE]
#配置Keystone的Admin Token
admin_token = KEYSTONE_ADMIN_TOKEN
#显示详细日志输出
verbose = True
# -----------------------------------------
[database]
注释掉之前的数据库连接信息
#connection = sqlite:////var/lib/keystone/keystone.db
#数据库链接信息
connection = mysql://keystone:KEYSTONE_DBPASS@controller/keystone
# -----------------------------------------
[memcache]
#memcache服务信息
servers = localhost:11211
# -----------------------------------------
[token]
#UUID临牌提供者
provider = keystone.token.providers.uuid.Provider
#memcached持久化驱动
driver = keystone.token.persistence.backends.memcache.Token
# -----------------------------------------
[revoke]
#SQL的撤回驱动
driver = keystone.contrib.revoke.backends.sql.Revoke
# -----------------------------------------

6.同步数据库

su -s /bin/sh -c "keystone-manage db_sync" keystone

7.配置 Apache HTTP Server

编辑 /etc/apache2/apache2.conf

vi /etc/apache2/apache2.conf
#首行加入
ServerName controller

创建 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>

启用认证服务的虚拟主机

a2ensite wsgi-keystone.conf

创建认证目录及脚本

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/*

重启HTTP服务

service apache2 restart

删除 Keystone 默认创建的 SQLite 数据库

rm -rfv /var/lib/keystone/keystone.db

8.设置临时环境变量

这里的OS_TOKEN即为KEYSTONE_ADMIN_TOKEN

export OS_TOKEN=KEYSTONE_ADMIN_TOKEN
export OS_URL=http://controller:35357/v2.0

9.为认证服务创建服务实体

openstack service create --name keystone --description "OpenStack Identity" identity

10.配置认证服务的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

11.创建项目、用户和角色

创建admin用户

#创建admin项目,这里需要输入密码,密码即为密码表中的 KEYSTONE_ADMIN_PASS
openstack project create --description "Admin Project" admin
#创建用户 admin
openstack user create --password-prompt admin
#创建租户 admin
openstack role create admin
#为项目admin和租户admin添加管理角色为admin
openstack role add --project admin --user admin admin
#为其他 OpenStack 服务创建服务项目
openstack project create --description "Service Project" service


创建demo用户
#创建项目 demo
openstack project create --description "Demo Project" demo
#创建用户 demo,这里也需要输入密码,密码即为密码表中的 KEYSTONE_DEMO_PASS
openstack user create --password-prompt demo
#创建租户 user
openstack role create user
#为项目demo和租户demo添加角色为user
openstack role add --project demo --user demo user

12.配置认证配置文件

将认证配置文件备份一下

cp /etc/keystone/keystone-paste.ini /etc/keystone/keystone-paste.ini.bak

取消掉环境变量

unset OS_TOKEN OS_URL

编辑 /etc/keystone/keystone-paste.ini

vi /etc/keystone/keystone-paste.ini

#定位到以下配置节点,删除其中的 admin_token_auth
[pipeline:public_api]
admin_token_auth

[pipeline:admin_api]
admin_token_auth

[pipeline:api_v3]
admin_token_auth

sed -i "s/token_auth admin_token_auth/token_auth/g" /etc/keystone/keystone-paste.ini

13.创建客户端脚本

创建admin用户脚本
新建一个文本,命名为admin-openrc.sh
输入以下内容,注意将其中的KEYSTONE_ADMIN_PASS更换

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=KEYSTONE_ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3

创建demo用户脚本
新建一个文本,命名为demo-openrc.sh
输入以下内容,注意将其中的KEYSTONE_DEMO_PASS更换

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=KEYSTONE_DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3

14.验证

加载admin用户的脚本,然后进行验证

source ~/admin-openrc.sh
openstack token issue

至此,Keystone已经安装完成

镜像服务 Glance

1.创建 Glance 数据库账户

mysql -uroot -pMARIADB_PASS -e "CREATE DATABASE glance;"
mysql -uroot -pMARIADB_PASS -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';"
mysql -uroot -pMARIADB_PASS -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';"

2.创建 Glance 在 Keystone 中的认证

#创建 Glance 用户,这里输入Glance在Keystone中的密码,密码可查密码表的GLANCE_PASS得到
openstack user create --password-prompt glance
#将 admin 角色添加给 Glance 用户和 Service 项目
openstack role add --project service --user glance admin
#创建 Glance 服务实体
openstack service create --name glance --description "OpenStack Image service" image
#创建 Glance 的 API Endpoint
openstack endpoint create \
--publicurl http://controller:9292 \
--internalurl http://controller:9292 \
--adminurl http://controller:9292 \
--region RegionOne \
image

3.安装 Glance 服务

apt-get -y install glance python-glanceclient

设置Glance

首先把Glance的配置备份,同时将其中的注释与空行去掉

mv /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak
cat /etc/glance/glance-api.conf.bak|grep -v "^#"|grep -v "^$">/etc/glance/glance-api.conf
mv /etc/glance/glance-registry.conf /etc/glance/glance-registry.conf.bak
cat /etc/glance/glance-registry.conf.bak|grep -v "^#"|grep -v "^$">/etc/glance/glance-registry.conf

按照如下设置/etc/glance/glance-api.conf

# ------------------------·-----------------
[DEFALUT]
#使用noop通知关掉驱动通知
notification_driver = noop
#显示详细日志输出
verbose = True
# ------------------------·-----------------
[database]
#这里将之前的连接信息注释掉
#sqlite_db = /var/lib/glance/glance.sqlite
#数据库链接信息
connection = mysql://glance:GLANCE_DBPASS@controller/glance
# -----------------------------------------
[keystone_authtoken]
#这里将之前的全部注释掉
#identity_uri = http://127.0.0.1:35357
#admin_tenant_name = %SERVICE_TENANT_NAME%
#admin_user = %SERVICE_USER%
#admin_password = %SERVICE_PASSWORD%
#revocation_cache_time = 10

#使用5000和35357端口进行身份校验
auth_uri = http://controller:5000
auth_url = http://controller:35357
#校验方式为密码(password)
auth_plugin = password
#指定项目和用户域为 defalut
project_domain_id = default
user_domain_id = default
#指定项目名称为service
project_name = service
#指定用户名为glance
username = glance
#指定密码为密码表中的GLANCE_PASS
password = GLANCE_PASS
# -----------------------------------------
[paste_deploy]
#指定认证使用keystone
flavor = keystone
# -----------------------------------------
[glance_store]
#指定镜像存储方式为文件(file)
default_store = file
指定镜像存储路径
filesystem_store_datadir = /var/lib/glance/images/
# -----------------------------------------

按照如下配置/etc/glance/glance-registry.conf

# -----------------------------------------
[DEFALUT]
#使用noop通知关掉驱动通知
notification_driver = noop
#显示详细日志输出
verbose = True
# -----------------------------------------
[database]
#这里将之前的连接信息注释掉
#sqlite_db = /var/lib/glance/glance.sqlite
#数据库链接信息
connection = mysql://glance:GLANCE_DBPASS@controller/glance
# -----------------------------------------
[keystone_authtoken]
#这里将之前的全部注释掉
#identity_uri = http://127.0.0.1:35357
#admin_tenant_name = %SERVICE_TENANT_NAME%
#admin_user = %SERVICE_USER%
#admin_password = %SERVICE_PASSWORD%
#revocation_cache_time = 10

#使用5000和35357端口进行身份校验
auth_uri = http://controller:5000
auth_url = http://controller:35357
#校验方式为密码(password)
auth_plugin = password
#指定项目和用户域为 defalut
project_domain_id = default
user_domain_id = default
#指定项目名称为service
project_name = service
#指定用户名为glance
username = glance
#指定密码为密码表中的GLANCE_PASS
password = GLANCE_PASS
# -----------------------------------------
[paste_deploy]
#指定认证使用keystone
flavor = keystone
# -----------------------------------------

5.导入数据库

su -s /bin/sh -c "glance-manage db_sync" glance

6.启动 Glance 服务

service glance-registry restart
service glance-api restart

7.删除 Glance 的 SQLite 数据库

rm -f /var/lib/glance/glance.sqlite

8.设置Glance认证 API 为 2.0

echo "export OS_IMAGE_API_VERSION=2" | tee -a ~/admin-openrc.sh ~/demo-openrc.sh
source ~/admin-openrc.sh

9.导入镜像

镜像是从外网下载的cirros-0.3.4,该镜像是专门用于测试openstack的一个镜像,镜像下载地址如下
http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

mkdir /tmp/images
wget -P /tmp/images http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

创建镜像

glance image-create \
--name "cirros-0.3.4-x86_64" \
--file /tmp/images/cirros-0.3.4-x86_64-disk.img \
--disk-format qcow2 \
--container-format bare \
--visibility public \
--progress

验证Glance服务

glance image-list

至此,Glance服务安装完成

计算服务 Nova

1.创建 Nova 数据库账户

其中的MARIADB_PASS,NOVA_DBPASS可从密码表中查询得到

mysql -uroot -pMARIADB_PASS -e "CREATE DATABASE nova;"
mysql -uroot -pMARIADB_PASS -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';"
mysql -uroot -pMARIADB_PASS -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';"

2.创建 Nova 在 Keystone 中的用户

#加载admin用户的客户端脚本
source ~/admin-openrc.sh
#创建 Nova 用户,这里输入nova 的密码,密码为密码表中的NOVA_PASS的值
openstack user create --password-prompt nova
#将 admin 角色添加给 Nova 用户
openstack role add --project service --user nova admin
#创建 Nova 服务实体
openstack service create --name nova --description "OpenStack Compute" compute
#创建 Nova 的 API Endpoint
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

3.安装 Nova

apt-get -y install nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient

4.配置 Nova

首先将nova的配置去掉注释和空行,备份一份

mv /etc/nova/nova.conf /etc/nova/nova.conf.bak
cat /etc/nova/nova.conf.bak|grep -v "^#"|grep -v "^$">/etc/nova/nova.conf

编辑/etc/nova/nova.conf

vi /etc/nova/nova.conf
# -----------------------------------------
[DEFAULT]
#显示详细日志输出
verbose = True
#指定消息队列使用RabbitMQ
rpc_backend = rabbit
#指定认证使用keystone
auth_strategy = keystone
#指定控制节点的IP地址,我这里为10.0.1.10
my_ip = 10.0.1.10
#指定VNC代理使用的IP地址,我这里为10.0.1.10
vncserver_listen = 10.0.1.10
vncserver_proxyclient_address = 10.0.1.10
# -----------------------------------------
[database]
#数据库链接信息
connection = mysql://nova:NOVA_DBPASS@controller/nova
# -----------------------------------------
[keystone_authtoken]
#使用5000和35357端口进行身份校验
auth_uri = http://controller:5000
auth_url = http://controller:35357
#校验方式为密码(password)
auth_plugin = password
#指定项目和用户域为 defalut
project_domain_id = default
user_domain_id = default
#指定项目名称为service
project_name = service
#指定用户名为nova
username = nova
#指定密码为密码表中的NOVA_PASS
password = NOVA_PASS
# -----------------------------------------
[glance]
#指定镜像服务的位置
host = controller
# -----------------------------------------
[oslo_messaging_rabbit]
#消息队列RabbitMQ的主机
rabbit_host = controller
#消息队列RabbitMQ的账号
rabbit_userid = openstack
#消息队列RabbitMQ的密码,该密码可查询密码表的RABBIT_PASS获得
rabbit_password = RABBIT_PASS
# -----------------------------------------
[oslo_concurrency]
#指定nova锁的路径
lock_path = /var/lock/nova
# -----------------------------------------

5.导入数据库

su -s /bin/sh -c "nova-manage db sync" nova

6.启动 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

7.删除 Nova 的 SQLite 数据库

rm -f /var/lib/nova/nova.sqlite

接下来安装计算节点的nova,计算节点的部署过程在
http://blog.l1n3.net/cloud/openstack/openstack-deploy-compute/

8.验证 Nova 服务

验证需要完成计算节点的Nova安装

source ~/admin-openrc.sh
nova service-list
nova endpoints
nova image-list

至此,Nova安装完成

网络服务 Neutron

1.创建数据库

mysql -uroot -pMARIADB_PASS -e "CREATE DATABASE neutron;"
mysql -uroot -pMARIADB_PASS -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';"
mysql -uroot -pMARIADB_PASS -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';"

2.创建 Neutron 在 Keystone 中的用户

#加载admin用户的客户端脚本
source ~/admin-openrc.sh
#创建 Neutron 用户,这里输入 Neutron 在 Keystone 中的密码,密码可查密码表的 NEUTRON_PASS 得到
openstack user create --password-prompt neutron
#将 admin 角色添加给 neutron 用户
openstack role add --project service --user neutron admin
#创建 neutron 服务实体
openstack service create --name neutron --description "OpenStack Networking" network
#创建 neutron 的 API Endpoint
openstack endpoint create \
--publicurl http://controller:9696 \
--adminurl http://controller:9696 \
--internalurl http://controller:9696 \
--region RegionOne \
network

3.安装 Neutron

apt-get -y install neutron-server neutron-plugin-ml2 python-neutronclient

4.配置 Neutron

将neutron相关的配置去掉注释和空行,备份一份,一共是三个文件

mv /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
cat /etc/neutron/neutron.conf.bak |grep -v "^#"|grep -v "^$">/etc/neutron/neutron.conf
mv /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.bak
cat /etc/neutron/plugins/ml2/ml2_conf.ini.bak|grep -v "^#"|grep -v "^$">/etc/neutron/plugins/ml2/ml2_conf.ini
mv /etc/nova/nova.conf /etc/nova/nova.conf.bak
cat /etc/nova/nova.conf.bak|grep -v "^#"|grep -v "^$">/etc/nova/nova.conf

配置neutron,编辑/etc/neutron/neutron.conf

vi /etc/neutron/neutron.conf
# -----------------------------------------
[DEFAULT]
#显示详细日志输出
verbose = True
#消息队列使用RabbitMQ
rpc_backend = rabbit
#指定核心插件为ml2
core_plugin = ml2
#指定开启路由服务
service_plugins = router
#指定允许IP地址重叠
allow_overlapping_ips = True
#指定开启网络拓扑结构更改通知
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
nova_url = http://controller:8774/v2
#指定认证使用keystone
auth_strategy = keystone
# -----------------------------------------
[keystone_authtoken]
#注释掉之前的内容
#auth_uri = http://127.0.0.1:35357/v2.0/
#identity_uri = http://127.0.0.1:5000
#admin_tenant_name = %SERVICE_TENANT_NAME%
#admin_user = %SERVICE_USER%
#admin_password = %SERVICE_PASSWORD%

#使用5000和35357端口进行身份校验
auth_uri = http://controller:5000
auth_url = http://controller:35357
#校验方式为密码(password)
auth_plugin = password
#指定项目和用户域为 defalut
project_domain_id = default
user_domain_id = default
#指定项目名称为service
project_name = service
#指定认证用户名为neutron
username = neutron
#指定认证密码为NEUTRON_PASS
password = NEUTRON_PASS
# -----------------------------------------
[database]
#注释掉之前的连接信息
#connection = sqlite:////var/lib/neutron/neutron.sqlite

#指定数据库链接密码查询密码表的NEUTRON_DBPASS得到
connection = mysql://neutron:NEUTRON_DBPASS@controller/neutron
# -----------------------------------------
[nova]
#使用35357端口进行身份校验
auth_url = http://controller:35357
#校验方式为密码(password)
auth_plugin = password
#指定项目和用户域为 defalut
project_domain_id = default
user_domain_id = default
#域的名称为RegionOne
region_name = RegionOne
#指定项目名称为service
project_name = service
#指定认证用户名为neutron
username = nova
#指定认证密码为NOVA_PASS
password = NOVA_PASS
# -----------------------------------------
[oslo_messaging_rabbit]
#消息队列RabbitMQ的主机
rabbit_host = controller
#消息队列RabbitMQ的账号
rabbit_userid = openstack
#消息队列RabbitMQ的密码,该密码可查询密码表的RABBIT_PASS获得
rabbit_password = RABBIT_PASS
# -----------------------------------------

配置ML2插件,编辑/etc/neutron/plugins/ml2/ml2_conf.ini

vi /etc/neutron/plugins/ml2/ml2_conf.ini
# -----------------------------------------
[ml2]
#启用的网络驱动
type_drivers = flat,vlan,gre,vxlan
#指定租户使用的网络类型
tenant_network_types = gre
#指定OVS驱动
mechanism_drivers = openvswitch
# -----------------------------------------
[ml2_type_gre]
#指定隧道ID范围
tunnel_id_ranges = 1:1000
# -----------------------------------------
[securitygroup]
#指定开启安全组
enable_security_group = True
#指定开启IPSET设置
enable_ipset = True
#指定OVS iptables的防火墙驱动
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
# -----------------------------------------

配置nova使用neutron网络,编辑/etc/nova/nova.conf

vi /etc/nova/nova.conf
# -----------------------------------------
[DEFAULT]
#指定neutron使用的APIs
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这个子配置的,新添加进去就行
[neutron]
#使用9696端口进行身份校验
url = http://controller:9696
#指定认证使用keystone
auth_strategy = keystone
#指定认证URL
admin_auth_url = http://controller:35357/v2.0
#指定认证的租户
admin_tenant_name = service
#指定用户名
admin_username = neutron
#指定密码为密码表中的NEUTRON_PASS
admin_password = NEUTRON_PASS
# -----------------------------------------

# 5.导入数据库

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

# 6.启动服务

service nova-api restart
service neutron-server restart

# 7.验证控制节点的网络服务

source ~/admin-openrc.sh
neutron ext-list

8.设置 Metadata

编辑 /etc/nova/nova.conf

vi /etc/nova/nova.conf
# -----------------------------------------
[neutron]
#开启metadata代理
service_metadata_proxy = True
#指定metadata共享密钥,密钥可以在密码表中的METADATA_SECRET查询
metadata_proxy_shared_secret = METADATA_SECRET
# -----------------------------------------

重启nova

service nova-api restart

到这里之后就可以去安装网络节点的服务了
http://blog.l1n3.net/cloud/openstack/openstack-deploy-network/

9.验证网络节点的安装

需要先完成网络节点的全部安装!!!

#生效keystone的admin配置
source ~/admin-openrc.sh
#查看neutron的代理列表
neutron agent-list


接下来可以安装计算节点的neutron服务
http://blog.l1n3.net/cloud/openstack/openstack-deploy-compute/
9.验证计算节点的安装

需要先完成计算节点的全部安装!!!

#生效keystone的admin配置
source ~/admin-openrc.sh
#查看neutron的代理列表
neutron agent-list

10.创建网络

需要之前的两个验证全部通过
首先创建外部网络

#生效admin配置
source ~/admin-openrc.sh

neutron net-create ext-net \
--router:external \
--provider:physical_network external \
--provider:network_type \
flat

在外部网络上创建子网,也可以在Dashboard里创建

#这里的地址池为外网的地址池
neutron subnet-create ext-net 192.168.100.0/24 \
--name ext-subnet \
--allocation-pool start=192.168.100.200,end=192.168.100.220 \
--disable-dhcp \
--gateway 192.168.100.2


创建租户网络
生效demo配置
source ~/demo-openrc.sh

在租户网络上创建网络

neutron net-create demo-net
#在demo-net上创建子网
neutron subnet-create demo-net 192.168.1.0/24 \
--name demo-subnet \
--gateway 192.168.1.1
#创建租户路由
neutron router-create demo-router
#把路由添加到demo租户的子网
neutron router-interface-add demo-router demo-subnet
#添加路由到外部网络
neutron router-gateway-set demo-router ext-net


至此,网络组建全部安装完成

控制台服务 Horizon

1.安装Dashboard

apt-get -y install openstack-dashboard

2.配置Dashboard

备份配置,且去掉注释和空行

mv /etc/openstack-dashboard/local_settings.py /etc/openstack-dashboard/local_settings.py.bak
cat /etc/openstack-dashboard/local_settings.py.bak|grep -v "^#"|grep -v "^$">/etc/openstack-dashboard/local_settings.py

编辑/etc/openstack-dashboard/local_settings.py

vi /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',
    }
}
#CACHES = {
#    'default': {
#        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
#    }
#}
# -----------------------------------------
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
# -----------------------------------------

3.重启 Apache

service apache2 reload

4.打开浏览器访问 Dashboard

http://controller/horizon


至此,Dashboard以及全部安装完成,Openstack的必要组建也全部安装完成


Viewing all articles
Browse latest Browse all 25

Trending Articles