用packstack在CentOS 7上的OpenStack部署
如何使用packstack将私人OpenStack云部署在CentOS上?
OpenStack是一个流行的免费和开源软件平台,用于构建公共和私有云。
我们可以使用PackStack安装实用程序在分钟内完成在CentOS 7上运行的一体的OpenStack云。
部署后,如果选择,我们可以将更多节点添加到OpenStack Cloud中。
在此设置中,我们将在CentOS上使用以下Services上使用PackStack构建OpenStack云.Cinder - 块存储营销营销 - 网络Servicenova - ComputesWift - 对象存储ServiceKeystone - Image ServiceHeat - Orge Service Heation Serviceglance - Dashboardon - Dashboard Magnum -Container服务
我正在使用以下规范在物理服务器上进行安装。
Memory: 128GB RAM CPU: Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz (12 cores) Disk: 3 x 4TB SATA Network: 1Gbit IPV4 Adresses: 1 x IPV4 + /28 Subnet (14 IPs) ----------------------------------------------------------- $grep -c ^processor /proc/cpuinfo 12 $free -h total used free shared buff/cache available Mem: 125G 207M 125G 21M 244M 124G Swap: 0B 0B 0B $lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 3G 1 loop sda 8:0 0 3.7T 0 disk sdb 8:16 0 3.7T 0 disk sdc 8:32 0 3.7T 0 disk $ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 0c:c4:7a:02:26:be brd ff:ff:ff:ff:ff:ff
服务器提供程序是hetzner,请选中我们的教程如何在Hetzner根服务器上安装CentOS 7
第1步:满足设置要求
我们将使用此处共享的命令禁用防火墙,NetworkManager和Selinux。
sudo systemctl disable --now firewalld NetworkManager sudo setenforce 0 sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
设置服务器主机名。
sudo hostnamectl set-hostname openstackcloud.example.com --static
最后,更新系统并安装基本实用程序。
sudo yum -y update sudo yum -y install vim wget curl telnet bash-completion sudo reboot
第2步:安装packstack包
使用下面的命令添加RDO(RPM分发)存储库。
--- OpenStack Stein --- $sudo yum install -y centos-release-openstack-stein --- OpenStack Rocky --- $sudo yum install -y centos-release-openstack-rocky
如果我们在本文中介绍了较新的露天稿时,请用释放名称替换Stein或者Rocky。
添加了存储库后,为CentOS安装PackStack包。
sudo yum install -y openstack-packstack
第3步:创建PackStack Answers文件
我们需要生成一个配置文件,该配置文件将用于使用packstack安装OpenStack云。
此文件具有如要安装的服务,存储配置,网络等等信息。
$sudo packstack --gen-answer-file /root/answers.txt Packstack changed given value to required value /root/.ssh/id_rsa.pub
打开生成的配置文件并编辑它以满足所需的安装。
这些是我的参数集。
CONFIG_NTP_SERVERS=0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org CONFIG_CONTROLLER_HOST=192.168.10.10 CONFIG_COMPUTE_HOSTS=192.168.10.10 CONFIG_NETWORK_HOSTS=192.168.10.10 CONFIG_STORAGE_HOST=192.168.10.10 CONFIG_KEYSTONE_ADMIN_PW=b29e883d82dd45f8 CONFIG_SWIFT_STORAGES=/dev/sdc2 CONFIG_PROVISION_DEMO=n CONFIG_HEAT_INSTALL=y CONFIG_HEAT_CFN_INSTALL=y CONFIG_CEILOMETER_INSTALL=y CONFIG_MAGNUM_INSTALL=y CONFIG_LBAAS_INSTALL=y CONFIG_CINDER_VOLUMES_CREATE=n CONFIG_NOVA_SCHED_RAM_ALLOC_RATIO=3.0 CONFIG_NOVA_LIBVIRT_VIRT_TYPE=%{::default_hypervisor} CONFIG_HORIZON_SSL=n
Cinder和Swift存储将在我的块设备/dev/sdc上。
sudo parted -s -a optimal -- /dev/sdc mklabel gpt sudo parted -s -a optimal -- /dev/sdc mkpart primary 0% 70% sudo parted -s -a optimal -- /dev/sdc mkpart primary 70% 100%
对于Cinder,我将创建一个使用/dev/sdc1的单独的LVM卷组。
$sudo pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created. $sudo vgcreate cinder-volumes /dev/sdc1 Volume group "cinder-volumes" successfully created $sudo lvcreate -l 100%FREE -T cinder-volumes/cinder-volumes-pool Thin pool volume with chunk size 256.00 KiB can address at most 63.25 TiB of data. Logical volume "cinder-volumes-pool" created.
Swift存储将坐在分区/dev/sdc2上,让我们其中创建一个文件系统。
sudo mkfs.xfs /dev/sdc2
第4步:使用packstack安装OpenStack
既然我们有答案文件要使用,我们可以使用packstack命令行引导OpenStack云。
sudo packstack --answer-file /root/answers.txt --timeout=1500 | tee packstrack-output.txt
请参阅以下安装输出。
Welcome to the Packstack setup utility The installation log file is available at: /var/tmp/packstack/20190710-211124-ZVhc4m/openstack-setup.log Installing: Clean Up [ DONE ] Discovering ip protocol version [ DONE ] Setting up ssh keys [ DONE ] Preparing servers [ DONE ] Pre installing Puppet and discovering hosts' details [ DONE ] Preparing pre-install entries [ DONE ] Setting up CACERT [ DONE ] Preparing AMQP entries [ DONE ] Preparing MariaDB entries [ DONE ] Fixing Keystone LDAP config parameters to be undef if empty[ DONE ] Preparing Keystone entries [ DONE ] Preparing Glance entries [ DONE ] Checking if the Cinder server has a cinder-volumes vg[ DONE ] Preparing Cinder entries [ DONE ] Preparing Nova API entries [ DONE ] Creating ssh keys for Nova migration [ DONE ] Gathering ssh host keys for Nova migration [ DONE ] Preparing Nova Compute entries [ DONE ] Preparing Nova Scheduler entries [ DONE ] Preparing Nova VNC Proxy entries [ DONE ] Preparing OpenStack Network-related Nova entries [ DONE ] Preparing Nova Common entries [ DONE ] Preparing Neutron LBaaS Agent entries [ DONE ] Preparing Neutron API entries [ DONE ] Preparing Neutron L3 entries [ DONE ] Preparing Neutron L2 Agent entries [ DONE ] Preparing Neutron DHCP Agent entries [ DONE ] Preparing Neutron Metering Agent entries [ DONE ] Checking if NetworkManager is enabled and running [ DONE ] Preparing OpenStack Client entries [ DONE ] Preparing Horizon entries [ DONE ] Preparing Swift builder entries [ DONE ] Preparing Swift proxy entries [ DONE ] Preparing Swift storage entries [ DONE ] Preparing Heat entries [ DONE ] Preparing Heat CloudFormation API entries [ DONE ] Preparing Gnocchi entries [ DONE ] Preparing Redis entries [ DONE ] Preparing Ceilometer entries [ DONE ] Preparing Aodh entries [ DONE ] Adding Magnum manifest entries [ DONE ] Preparing Puppet manifests [ DONE ] Copying Puppet modules and manifests [ DONE ] Applying 192.168.10.10_controller.pp 192.168.10.10_controller.pp: [ DONE ] Applying 192.168.10.10_network.pp 192.168.10.10_network.pp: [ DONE ] Applying 192.168.10.10_compute.pp 192.168.10.10_compute.pp: [ DONE ] Applying Puppet manifests [ DONE ] Finalizing [ DONE ] ** ** Installation completed successfully ** **** Additional information: * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components. * File /root/keystonerc_admin has been created on OpenStack client host 192.168.10.10. To use the command line tools you need to source the file. * To access the OpenStack Dashboard browse to http://192.168.10.10/dashboard . Please, find your login credentials stored in the keystonerc_admin in your home directory. * Because of the kernel update the host 192.168.10.10 requires reboot. * The installation log file is available at: /var/tmp/packstack/20190710-211124-ZVhc4m/openstack-setup.log * The generated manifests are available at: /var/tmp/packstack/20190710-211124-ZVhc4m/manifests
第5步:配置OpenStack网络
在界面上创建外部OVS桥。
$sudo vi /etc/sysconfig/network-scripts/ifcfg-eno1 DEVICE=eno1 ONBOOT=yes TYPE=OVSPort DEVICETYPE=ovs OVS_BRIDGE=br-ex $sudo vi /etc/sysconfig/network-scripts/ifcfg-br-ex DEVICE=br-ex BOOTPROTO=none ONBOOT=yes TYPE=OVSBridge DEVICETYPE=ovs USERCTL=yes PEERDNS=yes IPV6INIT=no IPADDR=192.168.10.10 NETMASK=255.255.255.0 GATEWAY=192.168.10.1 DNS1=192.168.10.1
将已配置的界面移动到BR-EX移动静态路由。
sudo mv /etc/sysconfig/network-scripts/route-eno1 /etc/sysconfig/network-scripts/route-br-ex
将网络物理接口添加到Open VSwitch中的BR-EX桥。
sudo ovs-vsctl add-port br-ex eno1; systemctl restart network.service
额外的桥可以以类似的方式配置。
我们需要使用正确的映射配置打开的vswitch。
$sudo vi /etc/neutron/plugins/ml2/openvswitch_agent.ini bridge_mappings=extnet:br-ex
重启Nova服务。
sudo systemctl restart openstack-nova-compute sudo systemctl restart openstack-nova-api sudo systemctl restart openstack-nova-scheduler
创建OpenStack专用网络。
$source keystonerc_admin $openstack network create private +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2019-06-26T13:44:43Z | | description | | | dns_domain | None | | id | e406e76f-e89d-42a2-bab1-9c883b2e49aa | | ipv4_address_scope | None | | ipv6_address_scope | None | | is_default | False | | is_vlan_transparent | None | | mtu | 1450 | | name | private | | port_security_enabled | True | | project_id | d16dda64b73945898eebbd5be9572612 | | provider:network_type | vxlan | | provider:physical_network | None | | provider:segmentation_id | 82 | | qos_policy_id | None | | revision_number | 2 | | router:external | Internal | | segments | None | | shared | False | | status | ACTIVE | | subnets | | | tags | | | updated_at | 2019-06-26T13:44:43Z | +---------------------------+--------------------------------------+ $openstack subnet create --network private --allocation-pool \ start=10.1.1.50,end=10.1.1.200 --dns-nameserver 8.8.8.8 \ --subnet-range 10.1.1.0/24 private_subnet +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | allocation_pools | 10.1.1.50-10.1.1.200 | | cidr | 10.1.1.0/24 | | created_at | 2019-06-26T13:48:34Z | | description | | | dns_nameservers | 8.8.8.8 | | enable_dhcp | True | | gateway_ip | 10.1.1.1 | | host_routes | | | id | 76ff61dd-0438-4848-a611-f4b4de070164 | | ip_version | 4 | | ipv6_address_mode | None | | ipv6_ra_mode | None | | name | private_subnet | | network_id | e406e76f-e89d-42a2-bab1-9c883b2e49aa | | project_id | d16dda64b73945898eebbd5be9572612 | | revision_number | 0 | | segment_id | None | | service_types | | | subnetpool_id | None | | tags | | | updated_at | 2019-06-26T13:48:34Z | +-------------------+--------------------------------------+
创建一个公共网络。
$openstack network create --provider-network-type flat \ --provider-physical-network extnet --external public +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2019-06-26T16:35:43Z | | description | | | dns_domain | None | | id | 900b1ede-3e62-4d73-88d3-b28c129a6bb6 | | ipv4_address_scope | None | | ipv6_address_scope | None | | is_default | False | | is_vlan_transparent | None | | mtu | 1500 | | name | public | | port_security_enabled | True | | project_id | d16dda64b73945898eebbd5be9572612 | | provider:network_type | flat | | provider:physical_network | extnet | | provider:segmentation_id | None | | qos_policy_id | None | | revision_number | 2 | | router:external | External | | segments | None | | shared | False | | status | ACTIVE | | subnets | | | tags | | | updated_at | 2019-06-26T16:35:43Z | +---------------------------+--------------------------------------+ $openstack subnet create --network public \ --allocation-pool start=<startip>,end=<lastip> \ --no-dhcp \ --subnet-range <subnet>/27 public_subnet
添加新路由器并配置路由器接口。
$openstack router create --no-ha router1 +-------------------------+--------------------------------------+ | Field | Value | +-------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2019-06-26T16:36:54Z | | description | | | distributed | False | | external_gateway_info | None | | flavor_id | None | | ha | False | | id | 188d5388-6f58-4387-8a13-018b9c2e81f4 | | name | router1 | | project_id | d16dda64b73945898eebbd5be9572612 | | revision_number | 0 | | routes | | | status | ACTIVE | | tags | | | updated_at | 2019-06-26T16:36:54Z | +-------------------------+--------------------------------------+ $openstack router set --external-gateway public router1 $openstack router add subnet router1 private_subnet $ip netns show qrouter-188d5388-6f58-4387-8a13-018b9c2e81f4 (id: 1) qdhcp-e406e76f-e89d-42a2-bab1-9c883b2e49aa (id: 0)
第6步:配置Cinder
配置Cinder以使用已配置的LVM卷。
$sudo vi /etc/cinder/cinder.conf enabled_backends=lvm volume_clear = none [lvm] volume_backend_name=lvm volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver iscsi_ip_address=192.168.10.10 iscsi_helper=lioadm volume_group=cinder-volumes volumes_dir=/var/lib/cinder/volumes
我们需要在更改后重新启动Cinder服务。
sudo systemctl restart openstack-cinder-volume sudo systemctl restart openstack-cinder-api
第7步:创建口味和安全组
让我们添加OpenStack Flavors:
openstack flavor create --id 0 --ram 1024 --vcpus 1 --swap 2048 --disk 10 m1.tiny openstack flavor create --id 1 --ram 2048 --vcpus 1 --swap 4096 --disk 20 m1.small openstack flavor create --id 2 --ram 4096 --vcpus 2 --swap 8192 --disk 40 m1.medium openstack flavor create --id 3 --ram 8192 --vcpus 4 --swap 8192 --disk 80 m1.large openstack flavor create --id 4 --ram 16384 --vcpus 8 --swap 8192 --disk 160 m1.xlarge
和基本的安全组
openstack security group create basic --description "Allow base ports" openstack security group rule create --protocol TCP --dst-port 22 --remote-ip 0.0.0.0/0 basic openstack security group rule create --protocol TCP --dst-port 80 --remote-ip 0.0.0.0/0 basic openstack security group rule create --protocol TCP --dst-port 443 --remote-ip 0.0.0.0/0 basic openstack security group rule create --protocol ICMP --remote-ip 0.0.0.0/0 basic
第8步:创建私钥并添加浏览图像
为帐户创建新密钥或者使用现有。
$ssh-keygen -q -N "" $openstack keypair create --public-key=~/.ssh/id_rsa.pub adminkey +-------------+-------------------------------------------------+ | Field | Value | +-------------+-------------------------------------------------+ | fingerprint | 7a:44:0d:94:8a:c6:6d:fd:11:8e:20:42:e9:10:6f:9d | | name | adminkey | | user_id | 4d1ab48579084cda924ca40a8ce0766b | +-------------+-------------------------------------------------+
有关浏览图像,请参阅我们以前的教程:
如何将浏览云图像添加到OpenStack
访问OpenStack仪表板
要访问OpenStack仪表板浏览到http://OpenStackip /仪表板。
登录凭据存储在主目录中的keystonerC_admin文件中。