OpenStack部署
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenStack部署相关的知识,希望对你有一定的参考价值。
OpenStack介绍:
OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。
OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。
OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。本文希望通过提供必要的指导信息,帮助大家利用OpenStack前端来设置及管理自己的公共云或私有云。
OpenStack云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as a Service, IaaS)。OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块
;后者是 Rackspace开发的分布式云存储模块,两者可以一起用,也可以分开单独用。OpenStack除了有 Rackspace 和 NASA 的大力支持外,还有包括 Dell、Citrix、 Cisco、 Canonical等重量级公司的贡献和支持,发展速度非常快,有取代另一个业界领先开源云平台 Eucalyptus 的态势。
OpenStack架构1:
OpenStack架构2:
OpenStack版本:
OpenStack官网:
http://www.openstack.org/
OpenStack Services:
实验架构:
环境:
操作系统:
CentOS-7-x86_64-Minimal-1611
linux-node1.smoke.com: 192.168.56.11 控制节点
linux-node2.smoke.com: 192.168.56.12 计算节点
node1:
修改主机名:注意:修改主机名,以后不能更改。
[[email protected] ~]# hostname linux-node1.smoke.com`
[[email protected] ~]# vim /etc/hostname
hostname linux-node1.smoke.com
网卡配置:
[[email protected] ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.11 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::20c:29ff:fe81:308f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:81:30:8f txqueuelen 1000 (Ethernet)
RX packets 1198 bytes 105479 (103.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1079 bytes 228271 (222.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.47.136 netmask 255.255.255.0 broadcast 192.168.47.255
inet6 fe80::20c:29ff:fe81:3099 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:81:30:99 txqueuelen 1000 (Ethernet)
RX packets 20266 bytes 29152833 (27.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4139 bytes 258109 (252.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
添加hosts文件:
[[email protected] ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.11 linux-node1 linux-node1.smoke.com
192.168.56.12 linux-node2 linux-node2.smoke.com
时间同步:会影响OpenStack正常运行。
[[email protected] ~]# yum -y install chrony
[[email protected] ~]# vim /etc/chrony.conf
allow 192.168.0.0/16
[[email protected] ~]# systemctl enable chronyd.service
[[email protected] ~]# systemctl start chronyd.service
设置时区:[[email protected] ~]# timedatectl set-timezone Asia/Shanghai
[[email protected] ~]# date
2018年 09月 30日 星期日 22:33:31 CST
安装mysql:
[[email protected] ~]# yum -y install mariadb mriadb-server MySQL-python
[[email protected] ~]# cp /usr/share/mariadb/my-medium.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = ‘SET NAMES utf8‘
character-set-server = utf8
[[email protected] ~]# systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[[email protected] ~]# systemctl start mariadb.service
[[email protected] ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we‘ll need the current
password for the root user. If you‘ve just installed MariaDB, and
you haven‘t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
... Success!
Normally, root should only be allowed to connect from ‘localhost‘. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
... Success!
By default, MariaDB comes with a database named ‘test‘ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
... Success!
Cleaning up...
All done! If you‘ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
[[email protected] ~]# mysql -uroot -psmoke520
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 11
Server version: 10.1.20-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type ‘help;‘ or ‘h‘ for help. Type ‘c‘ to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.01 sec)
MariaDB [(none)]> use mysql;
Database changed
MariaDB [mysql]> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| column_stats |
| columns_priv |
| db |
| event |
| func |
| general_log |
| gtid_slave_pos |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| index_stats |
| innodb_index_stats |
| innodb_table_stats |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| roles_mapping |
| servers |
| slow_log |
| table_stats |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
30 rows in set (0.01 sec)
MariaDB [mysql]> exit;
Bye
Keystone数据库:
[[email protected] ~]# mysql -uroot -psmoke520 -e "CREATE DATABASE keystone;"
[[email protected] ~]# mysql -uroot -psmoke520 -e "GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone‘@‘localhost‘ IDENTIFIED BY ‘keystone‘;"
[[email protected] ~]# mysql -uroot -psmoke520 -e "GRANT ALL PRIVILEGES ON keyston.* TO ‘keystone‘@‘%‘ IDENTIFIED BY ‘keystone‘;"
Glance数据库:
[[email protected] ~]# mysql -uroot -psmoke520 -e "CREATE DATABASE glance;"
[[email protected] ~]# mysql -uroot -psmoke520 -e "GRANT ALL PRIVILEGES ON glance.* TO ‘glance‘@‘localhost‘ IDENTIFIED BY ‘glance‘;"
[[email protected] ~]# mysql -uroot -psmoke520 -e "GRANT ALL PRIVILEGES ON glance.* TO ‘glance‘@‘%‘ IDENTIFIED BY ‘glance‘;"
Nove数据库:
[[email protected] ~]# mysql -uroot -psmoke520 -e "CREATE DATABASE nova;"
[[email protected] ~]# mysql -uroot -psmoke520 -e "GRANT ALL PRIVILEGES ON nova.* TO ‘nova‘@‘localhost‘ IDENTIFIED BY ‘nova‘;"
[[email protected] ~]# mysql -uroot -psmoke520 -e "GRANT ALL PRIVILEGES ON nova.* TO ‘nova‘@‘%‘ IDENTIFIED BY ‘nova‘;"
Neutron数据库:
[[email protected] ~]# mysql -uroot -psmoke520 -e "CREATE DATABASE neutron;"
[[email protected] ~]# mysql -uroot -psmoke520 -e "GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron‘@‘localhost‘ IDENTIFIED BY ‘neutron‘;"
[[email protected] ~]# mysql -uroot -psmoke520 -e "GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron‘@‘%‘ IDENTIFIED BY ‘neutron‘;"
Cinder数据库:
[[email protected] ~]# mysql -uroot -psmoke520 -e "CREATE DATABASE cinder;"
[[email protected] ~]# mysql -uroot -psmoke520 -e "GRANT ALL PRIVILEGES ON cinder.* TO ‘cinder‘@‘localhost‘ IDENTIFIED BY ‘cinder‘;"
[[email protected] ~]# mysql -uroot -psmoke520 -e "GRANT ALL PRIVILEGES ON cinder.* TO ‘cinder‘@‘%‘ IDENTIFIED BY ‘cinder‘;"
[[email protected] ~]# mysql -uroot -psmoke520
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 30
Server version: 10.1.20-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type ‘help;‘ or ‘h‘ for help. Type ‘c‘ to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| cinder |
| glance |
| information_schema |
| keystone |
| mysql |
| neutron |
| nova |
| performance_schema |
+--------------------+
8 rows in set (0.00 sec)
MariaDB [(none)]> exit;
Bye
SOA(面向服务的架构) :
面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/Web Service技术之后的自然延伸。
SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。
体系结构:
松耦合的系统
基本特征:
可从企业外部访问
随时可用
粗粒度的服务接口分级
松散耦合
可重用的服务
服务接口设计管理
标准化的服务接口
支持各种消息模式
精确定义的服务契约
SOA 服务用消息进行通信,该消息通常使用XML Schema来定义(也叫做XSD, XML Schema Definition)。消费者和提供者或消费者和服务之间的通信多见于不知道提供者的环境中。服务间的通讯也可以看作企业内部处理的关键商业文档。
SOA服务通过一个扮演目录列表(directory listing)角色的登记处(Registry)来进行维护。应用程序在登记处(Registry)寻找并调用某项服务。统一描述,定义和集成(UDDI, Universal Description, Definition, and Integration)是服务登记的标准。
安装Message queue(消息队列):
OpenStack支持RabbitMQ,Qpid,ZeroMQ消息队列。[[email protected] ~]# yum -y install rabbitmq-server
如果yum无法安装,可以到官网下载最新包安装,https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.8
[[email protected] ~]# ll
总用量 258604
-rw-------. 1 root root 1245 7月 18 19:48 anaconda-ks.cfg
-rw-r--r-- 1 root root 170023183 10月 1 01:53 jdk-8u181-linux-x64.rpm
drwxrwxr-x 12 421 wheel 4096 10月 1 01:47 otp_src_21.1
-rw-r--r-- 1 root root 85214629 10月 1 01:22 otp_src_21.1.tar.gz
-rw-r--r-- 1 root root 9557762 10月 1 01:08 rabbitmq-server-3.7.8-1.el7.noarch.rpm
JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
[[email protected] ~]# yum -y install jdk-8u181-linux-x64.rpm
[[email protected] otp_src_21.1]# yum -y install make ncurses-devel gcc gcc-c++ unixODBC unixODBC-devel openssl openssl-devel
wxWidgets下载地址:
https://www.wxwidgets.org/downloads/
[[email protected] wxWidgets-3.1.1]# yum -y install gtk2-devel binutils-devel
[[email protected] ~]# tar xf wxWidgets-3.1.1.tar.bz2
[[email protected] ~]# cd wxWidgets-3.1.1
[[email protected] wxWidgets-3.1.1]# yum install gtk2-devel
[[email protected] wxWidgets-3.1.1]# yum -y install mesa-libGLU-devel
[[email protected] wxWidgets-3.1.1]# ./configure --with-opengl --enable-debug --enable-unicode
[[email protected] wxWidgets-3.1.1]# make && make install
[[email protected] include]# vim /etc/ld.so.conf.d/wxWidgets.conf
[[email protected] include]# ldconfig
Erlang下载地址:
http://www.erlang.org/downloads
[[email protected] ~]# tar xf otp_src_21.1.tar.gz
[[email protected] ~]# cd otp_src_21.1
[[email protected] otp_src_21.1]# ./configure
node2:[[email protected] ~]# hostname linux-node2.smoke.com
[[email protected] ~]# vim /etc/hostname
hostname linux-node2.smoke.com
[[email protected] ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.12 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::9752:504d:ee43:64f5 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b2:dc:b3 txqueuelen 1000 (Ethernet)
RX packets 23651 bytes 33698486 (32.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6118 bytes 455955 (445.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.47.135 netmask 255.255.255.0 broadcast 192.168.47.255
inet6 fe80::c33f:7c14:d42c:bc06 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b2:dc:bd txqueuelen 1000 (Ethernet)
RX packets 684 bytes 49408 (48.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 108 bytes 10149 (9.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 20 bytes 1708 (1.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 20 bytes 1708 (1.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[[email protected] ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.11 linux-node1 linux-node1.smoke.com
192.168.56.12 linux-node2 linux-node2.smoke.com
[[email protected] ~]# yum -y install chrony`
allow 192.168.0.0/16
[[email protected] ~]# systemctl enable chronyd.service
[[email protected] ~]# systemctl start chronyd.service
[[email protected] ~]# timedatectl set-timezone Asia/Shanghai
[[email protected] ~]# date
2018年 09月 30日 星期日 22:33:55 CST
以上是关于OpenStack部署的主要内容,如果未能解决你的问题,请参考以下文章