公司部署 OpenStack 的 3 大原因:更高的運營效率、創(chuàng)新能力和成本節(jié)約
成都創(chuàng)新互聯(lián)是一家專業(yè)提供遂溪企業(yè)網(wǎng)站建設,專注與成都做網(wǎng)站、網(wǎng)站制作、H5響應式網(wǎng)站、小程序制作等業(yè)務。10年已為遂溪眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。
環(huán)境:rhel7.2
salt-master :172.25.33.250
salt-slavle: 172.25.33.10 管理節(jié)點,controller
salt-slave:172.25.33.11
首先要在saltstack官網(wǎng)上安裝
rpm --import https://repo.saltstack.com/yum/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub
修改yum源:
[saltstack-repo]
name=SaltStack repo for RHEL/CentOS $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub
修改/etc/yum.conf,打開cache緩存功能,這樣,可以用能上網(wǎng)的電腦為不能上網(wǎng)的電腦加載yum源。yum緩存在/var/cache/yum/下。
修改后直接下載安裝
yum install -y salt-master
yum install -y salt-minion
將緩存好的軟件直接存放起來,作為其他主機的yum源。
在master上修改配置文件:/etc/salt/master
interface: 0.0.0.0 **注意格式
base:
- /srv/salt/
在minion上修改配置文件:/etc/salt/minion
master: 172.25.33.250
啟動服務:
# systemctl start salt-master.service
# systemctl start salt-minion
# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
server10.example
Rejected Keys:
# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
server10.example
Proceed? [n/Y] Y
Key for minion server10.example accepted.
接受minion,測試:
# salt "*" test.ping
server10.example:
True
正常!
部署openstack
部署之前,要確保:
1、master和minion的防火墻關閉
2、二者的selinux關閉,雖然官方說seliunx可以開著,但是有概率對部署造成困擾
3、時間要同步,同步時間使用chrony進行。
修改172.25.33.250 /etc/chrony.conf
server 172.25.33.10 iburst
allow 172.25.33.0/24
修改 server10.example.com /etc/chrony.conf
Service | Project name | Description |
Dashboard | Horizon | 通過提供了web服務實現(xiàn)openstack服務的交互,比如創(chuàng)建實例,配置IP以及配置訪問控制。 |
Compute | Nova | 在系統(tǒng)環(huán)境中管理整個生態(tài)圈的計算。承擔著經(jīng)過請求后的孵化,調(diào)度和回收虛擬機等一系列的責任,是核心組件,可以說是真正實現(xiàn)的角色。 |
Networking | Neutron | 提供了網(wǎng)絡服務,連接起了其他服務。為用戶提供API去定義網(wǎng)絡并將它們聯(lián)系起來。支持多種網(wǎng)絡供應商和新興的網(wǎng)絡技術,比如vxlan等。 |
Object Storage | Swift | 通過了RESTful API來存儲和檢索任務非結(jié)構(gòu)化的數(shù)據(jù)對象,對數(shù)據(jù)同步和橫向擴展有很高的容錯性,不是掛載文件目錄形勢的使用方式,它是將對象和文件寫入多個驅(qū)動程序以確保數(shù)據(jù)在服務器集群中的完整性。 |
Block | Cinder | 提供了塊存儲和持久化,可插拔式的體系架構(gòu)簡化了創(chuàng)建和管理存儲設備。 |
Identity | Keystone | 提供openstack服務的驗證和授權功能。為全部服務提供了訪問接口。 |
Image service | Glance | 提供虛擬磁盤設備的鏡像和檢索服務,在計算實例時以供使用。 |
Telemetry | Ceilometer | 可擴展的服務,提供了監(jiān)控、測量、計費、統(tǒng)計等功能。 |
Orchestration | Heat | 通過組合模板來進行的服務。 |
Database service | Trove | 為關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫提供可擴展和可依賴的云數(shù)據(jù)庫服務。 |
Data processing service | Sahara | 屬于openstack的大數(shù)據(jù)項目。是openstack與hadoop的融合。 |
安裝openstack客戶端:
yum install python-openstackclient -y --downloadonly
**如果系統(tǒng)關閉了sellinux就不要下載selinux包了。
yum install openstack-selinux --downloadonly
將下載的安裝包放到一個yum源里,生成repo
# createrepo .
在minion上:
]# cat openstack.repo
[openstack-ocata]
name=openstack-ocata
baseurl=ftp://172.25.33.250/openstack/openstack-ocata/
gpgcheck=0
[epel]
name=epel
baseurl=ftp://172.25.33.250/openstack/epel/
gpgcheck=0
# yum install python-openstackclient -y
在master上
yum install mariadb mariadb-server python2-PyMySQL --downloadonly
然后進入緩存目錄,將其同不到y(tǒng)um源處。
# rsync * 172.25.33.250:/var/ftp/openstack/openstack-ocata/
# createrepo /var/ftp/openstack/openstack-ocata/
以后不再寫master上的操作,所有目錄軟件均由此來。
以下操作均在minon1上完成。
大多數(shù) OpenStack 服務使用 SQL 數(shù)據(jù)庫來存儲信息。 典型地,數(shù)據(jù)庫運行在控制節(jié)點上
yum install mariadb mariadb-server python2-PyMySQL
創(chuàng)建并添加:
# cat /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 172.25.33.10
#設置 ``bind-address``值為控制節(jié)點的管理網(wǎng)絡IP地址以使得其它節(jié)點可以通過管理網(wǎng)絡訪問數(shù)據(jù)庫
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
#設置如下鍵值來啟用一起有用的選項和 UTF-8 字符集
啟動數(shù)據(jù)庫服務:
# systemctl enable mariadb.service
# systemctl start mariadb.service
為了保證數(shù)據(jù)庫服務的安全性,運行``mysql_secure_installation``腳本。特別需要說明的是,為數(shù)據(jù)庫的root用戶設置一個適當?shù)拿艽a
mysql_secure_installation
其中,認證服務,鏡像服務,計算服務,Networking均有先決條件,所以,可以編寫sql語句,將其一次導入。
# cat osp.sql
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'172.25.33.250' \
IDENTIFIED BY 'keystone';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'keystone';
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'172.25.33.250' \
IDENTIFIED BY 'glance';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'glance';
CREATE DATABASE nova_api;
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'172.25.33.250' \
IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'172.25.33.250' \
IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'nova';
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'172.25.33.250' \
IDENTIFIED BY 'neutron';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
IDENTIFIED BY 'neutron';
# mysql -p 登陸Mysql查看: > show databases; +--------------------+ | Database | +--------------------+ | information_schema | | glance | | keystone | | mysql | | neutron | | nova | | nova_api | | performance_schema | +--------------------+ 8 rows in set (0.00 sec) 導入成功! Telemetry 服務使用 NOSQL 數(shù)據(jù)庫來存儲信息,典型地,這個數(shù)據(jù)庫運行在控制節(jié)點上 # yum install MongoDB-server mongodb 編輯文件 /etc/mongod.conf 并完成如下動作: bind_ip = 172.25.33.10 #配置 bind_ip 使用控制節(jié)點管理網(wǎng)卡的IP地址 smallfiles = true #默認情況下,MongoDB會在``/var/lib/mongodb/journal`` 目錄下創(chuàng)建幾個 1 GB 大小的日志文件。如果你想將每個日志文件大小減小到128MB并且限制日志文件占用的總空間為512MB,配置 smallfiles 的值 啟動MongoDB 并配置它隨系統(tǒng)啟動 # systemctl enable mongod.service # systemctl start mongod.service OpenStack 使用 message queue 協(xié)調(diào)操作和各服務的狀態(tài)信息。消息隊列服務一般運行在控制節(jié)點上。OpenStack支持好幾種消息隊列服務包括 RabbitMQ, Qpid, 和 ZeroMQ。不過,大多數(shù)發(fā)行版本的OpenStack包支持特定的消息隊列服務 # yum install rabbitmq-server # systemctl enable rabbitmq-server.service # systemctl start rabbitmq-server.service # netstat -antlp|grep 5672 tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 3158/beam tcp6 0 0 :::5672 :::* LISTEN 3158/beam 添加 openstack 用戶 rabbitmqctl add_user openstack rabbit 給``openstack``用戶配置寫和讀權限: # rabbitmqctl set_permissions openstack ".*" ".*" ".*" # rabbitmqctl add_user openstack rabbit Creating user "openstack" ... # rabbitmqctl set_permissions openstack ".*" ".*" ".*" Setting permissions for user "openstack" in vhost "/" ... 認證服務認證緩存使用Memcached緩存令牌。緩存服務memecached運行在控制節(jié)點。在生產(chǎn)部署中,我們推薦聯(lián)合啟用防火墻、認證和加密保證它的安全 # yum install memcached python-memcached 修改配置文件:**如果不修改端口的話,其監(jiān)控端口可能監(jiān)控不到。 # cat /etc/sysconfig/memcached PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" #OPTIONS="-l 127.0.0.1,::1" OPTIONS="172.0.0.0,::1" # systemctl enable memcached.service # systemctl start memcached.service 抓取端口: # netstat -antlp|grep 1121 tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 2999/memcached tcp6 0 0 :::11211 :::* LISTEN 2999/memcached 安裝鏡像服務: 可能會缺一個包python-zope-interface,需要自己下載并安裝。 #yum install openstack-keystone httpd mod_wsgi 生成一個隨機值在初始的配置中作為管理員的令牌。 #openssl rand -hex 10 # openssl rand -hex 10 ec8b4ce2292ca6c24cd2 編輯文件 /etc/keystone/keystone.conf 并完成如下動作: # vim /etc/keystone/keystone.conf [DEFAULT] ... admin_token = ec8b4ce2292ca6c24cd2 [database] connection = mysql+pymysql://keystone:keystone@172.25.33.10/keystone 第二個keystone是創(chuàng)建數(shù)據(jù)庫時社的密碼,@后的IP時控制節(jié)點的IP [token] ... provider = fernet # 配置Fernet UUID令牌的提供者 安裝完memcache后,要使用memcache作為驅(qū)動。修改/etc/keystone/keystone.conf: 2842 driver = memcache 1500 servers = 172.25.33.10:11211 初始化身份認證服務的數(shù)據(jù)庫 su -s /bin/sh -c "keystone-manage db_sync" keystone 初始化后可以使用查看命令查看keystone中的表。 # mysql -ukeystone -pkeystone keystone -e "show tables;" 這三個keystone分別時用戶名,密碼,數(shù)據(jù)庫名。 配置 Apache HTTP 服務器 編輯``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 選項為控制節(jié)點: ServerName 172.25.33.10:80 創(chuàng)建文件 /etc/httpd/conf.d/wsgi-keystone.conf # cat /etc/httpd/conf.d/wsgi-keystone.conf Listen 5000 Listen 35357 WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-public WSGIScriptAlias / /usr/bin/keystone-wsgi-public WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined Require all granted WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-admin WSGIScriptAlias / /usr/bin/keystone-wsgi-admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined Require all granted 創(chuàng)建服務實體和API端點: 默認情況下,身份認證服務數(shù)據(jù)庫不包含支持傳統(tǒng)認證和目錄服務的信息。你必須使用:keystone-install 的內(nèi)容為身份認證服務創(chuàng)建的臨時身份驗證令牌用來初始化的服務實體和API端點。 你必須使用``–os-token``參數(shù)將認證令牌的值傳遞給:command:openstack 命令。類似的,你必須使用``–os-url`` 參數(shù)將身份認證服務的 URL傳遞給 openstack 命令或者設置OS_URL環(huán)境變量 配置認證令牌: # export OS_TOKEN=ec8b4ce2292ca6c24cd2 **身份令牌在配置認證服務中的配置文件中有用。 配置端點URL: # export OS_URL=http://172.25.33.10:35357/v3 配置認證 API 版本: # export OS_IDENTITY_API_VERSION=3 創(chuàng)建服務實體和API端點 1、在你的Openstack環(huán)境中,認證服務管理服務目錄。服務使用這個目錄來決定您的環(huán)境中可用的服務。 創(chuàng)建服務實體和身份認證服務: $ openstack service create \ --name keystone --description "OpenStack Identity" identity +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Identity | | enabled | True | | id | 557ac19a848547e59df8792cec5f3598 | | name | keystone | | type | identity 2、身份認證服務管理了一個與您環(huán)境相關的 API 端點的目錄。服務使用這個目錄來決定如何與您環(huán)境中的其他服務進行通信。 OpenStack使用三個API端點變種代表每種服務:admin,internal和public。默認情況下,管理API端點允許修改用戶和租戶而公共和內(nèi)部APIs不允許這些操作。在生產(chǎn)環(huán)境中,處于安全原因,變種為了服務不同類型的用戶可能駐留在單獨的網(wǎng)絡上。對實例而言,公共API網(wǎng)絡為了讓顧客管理他們自己的云在互聯(lián)網(wǎng)上是可見的。管理API網(wǎng)絡在管理云基礎設施的組織中操作也是有所限制的。內(nèi)部API網(wǎng)絡可能會被限制在包含OpenStack服務的主機上。此外,OpenStack支持可伸縮性的多區(qū)域。為了簡單起見,本指南為所有端點變種和默認``RegionOne``區(qū)域都使用管理網(wǎng)絡。 創(chuàng)建認證服務的 API 端點: # openstack service create \ > --name keystone --description "OpenStack Identity" identity +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Identity | | enabled | True | | id | 557ac19a848547e59df8792cec5f3598 | | name | keystone | | type | identity # openstack endpoint create --region RegionOne \ > identity public http://172.25.33.10:5000/v3 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 71042a337b0c41afab0dc64017fe897c | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 557ac19a848547e59df8792cec5f3598 | | service_name | keystone | | service_type | identity | | url | http://172.25.33.10:5000/v3 | +--------------+----------------------------------+ # openstack endpoint create --region RegionOne \ > identity internal http://172.25.33.10:5000/v3 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | f73b5f587b0d4f748db51d19dc0064c1 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 557ac19a848547e59df8792cec5f3598 | | service_name | keystone | | service_type | identity | | url | http://172.25.33.10:5000/v3 | +--------------+----------------------------------+ # openstack endpoint create --region RegionOne \ > identity admin http://172.25.33.10:35357/v3 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 093b3ff515ed4228aaea142db68f9ebe | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 557ac19a848547e59df8792cec5f3598 | | service_name | keystone | | service_type | identity | | url | http://172.25.33.10:35357/v3 | +--------------+----------------------------------+ 創(chuàng)建域、項目、用戶和角色: 身份認證服務為每個OpenStack服務提供認證服務。認證服務使用 T domains, projects (tenants), :term:`users 1、創(chuàng)建域``default``: # openstack domain create --description "Default Domain" default +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Default Domain | | enabled | True | | id | 2ed7d4d390914a55b19ca76df7d78be5 | | name | default | +-------------+----------------------------------+ 2、在你的環(huán)境中,為進行管理操作,創(chuàng)建管理的項目、用戶和角色: 創(chuàng)建 admin 項目: # openstack project create --domain default \ > --description "Admin Project" admin +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Admin Project | | domain_id | 2ed7d4d390914a55b19ca76df7d78be5 | | enabled | True | | id | 7f1f3eae73dc439da7f53c15c634c4e7 | | is_domain | False | | name | admin | | parent_id | 2ed7d4d390914a55b19ca76df7d78be5 | +-------------+----------------------------------+ 創(chuàng)建 admin 用戶: # openstack user create --domain default \ > --password admin admin +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | 2ed7d4d390914a55b19ca76df7d78be5 | | enabled | True | | id | d18bdef0fe114b089a09f1fc21fefd88 | | name | admin | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ 創(chuàng)建 admin 角色: # openstack role create admin +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | None | | id | e664a32afabb4701992287ab341fc642 | | name | admin | +-----------+----------------------------------+ 添加``admin`` 角色到 admin 項目和用戶上 # openstack role add --project admin --user admin admin 創(chuàng)建的任何角色必須映射到每個OpenStack服務配置文件目錄下的``policy.json`` 文件中。默認策略是給予“admin“角色大部分服務的管理訪問權限 3、創(chuàng)建``service``項目: # openstack project create --domain default \ > --description "Service Project" service +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Service Project | | domain_id | 2ed7d4d390914a55b19ca76df7d78be5 | | enabled | True | | id | fb85ea3cb36a4ba38fcb607ce085e15e | | is_domain | False | | name | service | | parent_id | 2ed7d4d390914a55b19ca76df7d78be5 | +-------------+----------------------------------+ 4、常規(guī)(非管理)任務應該使用無特權的項目和用戶。作為例子,創(chuàng)建 demo 項目和用戶。 創(chuàng)建demo項目 # openstack project create --domain default \ > --description "Demo Project" demo +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Demo Project | | domain_id | 2ed7d4d390914a55b19ca76df7d78be5 | | enabled | True | | id | 45a1b89bc5de479e8d3e04eae314ee88 | | is_domain | False | | name | demo | | parent_id | 2ed7d4d390914a55b19ca76df7d78be5 | +-------------+----------------------------------+ ** 當為這個項目創(chuàng)建額外用戶時,不要重復這一步。 創(chuàng)建``demo`` 用戶 # openstack user create --domain default \ > --password demo demo +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | 2ed7d4d390914a55b19ca76df7d78be5 | | enabled | True | | id | 251ad20a4d754dc4a104a3f5b8159142 | | name | demo | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ 創(chuàng)建 user 角色: # openstack role create user +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | None | | id | ab0c8bfe852b46adaae9d8a7015f98cd | | name | user | +-----------+----------------------------------+ 添加 user``角色到 ``demo 項目和用戶: openstack role add --project demo --user demo user 驗證操作: 1、重置``OS_TOKEN``和``OS_URL`` 環(huán)境變量: #unset OS_TOKEN OS_URL 2、作為 admin 用戶,請求認證令牌: # openstack --os-auth-url http://172.25.33.10:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue Password: **管理端口35357 +------------+---------------------------------------------------------------+ | Field | Value | +------------+---------------------------------------------------------------+ | expires | 2017-04-04T08:55:18+0000 | | id | gAAAAABY41FmAHBHvYUHWOpciT4HGmm4W3EfdKxwBuBBK17ypEY4yMU6COj1c | | | ANOBBsfBFb76BCSdGVLUm7Bp8528kcYbx93jLVdTL92_-gY-e_pLAFfVyEyw2 | | | mKoG64Q4C34fwxQqKLlwAMwSPd5Jm03NRF6aPhO52E_A552CNij47pdVQrJ14 | | project_id | 7f1f3eae73dc439da7f53c15c634c4e7 | | user_id | d18bdef0fe114b089a09f1fc21fefd88 | +------------+---------------------------------------------------------------+ 3、作為``demo`` 用戶,請求認證令牌: # openstack --os-auth-url http://172.25.33.10:5000/v3 --os-project-domain-name default --os-user-domain-name default \ > --os-project-name demo --os-username demo token issue Password: **常規(guī)訪問端口5000 +------------+---------------------------------------------------------------+ | Field | Value | +------------+---------------------------------------------------------------+ | expires | 2017-04-04T08:57:08+0000 |
當前名稱:openstack上
文章源于:http://weahome.cn/article/iidcpi.html