云计算简介
基于互联网的相关服务的增加、使用和交付的一个模式
这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池
分为IaaS(后端基础服务,包含公有云、私有云、混合云)、PaaS(开发平台服务)、SaaS(市场应用平台)
OpenStack
OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的项目,就是一套IaaS解决方案,以Apache许可证为授权 搭建OpenStack需要的环境配置
1. 搭建一个DNS服务器:
yum install -y bind bind-chroot
# 修改配置文件
vim /etc/named.conf
……
listen-on port 53 { 192.168.1.254; };
// listen-on-v6 port 53 { ::1; };
……
forwarders { 8.8.8.8; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
……
2. 搭建chrony时间同步服务器(其本身要绑定一个国际认证的时间同步服务器)
# 修改配置文件
vim /etc/chrony.conf
# 注释里面的所有server,然后把下面信息写入
server ntp.aliyun.com iburst
bindacqaddress 0.0.0.0
allow 0/0
# 测试时间同步
chronyc sources -v | grep '^\^\*' # 检查是否和外网的时间服务器同步
netstat -ntlup | grep chrony | grep 0.0.0.0:123 # 检查是否开启允许他人访问的时间同步服务
3. 服务器openstack,10G内存,系统存储50G,存储空盘20G,两个网卡
# 修改memory、currentMemory、disk、需要再复制写一组disk文件、再写一个interface
virsh edit openstack
……
<memory unit='KiB'>9961472</memory>
<currentMemory unit='KiB'>9961472</currentMemory>
……
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/node1.img(存储镜像盘的位置)'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/disk.img(存储镜像盘的位置)'/>
<target dev='vdb' bus='virtio'/>
</disk>
……
<interface type='bridge'>
<mac address='52:54:00:54:74:22'/>
<source bridge='net1网络名'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='bridge'>
<source bridge='net2网络名'/>
<model type='virtio'/>
</interface>
……
# 配置后启动虚拟机,并前往虚拟机配置新网卡的IP地址
4. 节点端nova,5G内存,系统存储50G,两个网卡(和服务器openstack的网卡可以互通)
……
<memory unit='KiB'>5242880</memory>
<currentMemory unit='KiB'>5242880</currentMemory>
……
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/node1.img(存储镜像盘的位置)'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
……
<interface type='bridge'>
<mac address='52:54:00:54:74:22'/>
<source bridge='net1网络名'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='bridge'>
<source bridge='net2网络名'/>
<model type='virtio'/>
</interface>
……
5. 为两台服务器配置yum源(包括centos7、rhel7-extras、rhel7OSP-10的十个yum库)
6. 检查环境搭建问题
6.1 是否禁用selinux
6.2 是否关闭firewalld和NetworkManager
6.3 检查配置主机网络参数(静态IP)
6.4 检查配置主机yum源(12个)
6.5 检查公钥是否导入(保险其见,部署yum的公钥导入)
6.6 检查NTP和DNS服务器是否可用
搭建OpenStack服务器
1. 配置LVM逻辑卷,作为云盘的存储位置
[root@openstack ~]# yum install -y lvm2
pvcreate /dev/物理磁盘名(添加的那个20G的空盘)
vgcreate cinder-volumes /dev/物理磁盘名
# 卷组名字必须是cinder-volumes
2. 安装依赖包 ( KVM的四个必备软件[KVM篇有写]、Python工具包 ),两个机器都要装
[root@openstack ~]# yum install -y qemu-kvm libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools
[root@nova ~]# yum install -y qemu-kvm libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools
3. 安装packstack(只在openstack服务器上装)
[root@openstack ~]# yum install -y openstack-packstack
4. 部署packstack应答文件
[root@openstack ~]# packstack --gen-answer-file answer.ini(应答文件名字)
sed -i '/^CONFIG_DEFAULT_PASSWORD=/cCONFIG_DEFAULT_PASSWORD=SmartLyu' answer.ini
sed -i '/^CONFIG_SWIFT_INSTALL/cCONFIG_SWIFT_INSTALL=n' answer.ini
sed -i '/^CONFIG_NTP_SERVERS/cCONFIG_NTP_SERVERS=192.168.1.254' answer.ini
sed -i '/^CONFIG_CINDER_VOLUMES_CREATE/cCONFIG_CINDER_VOLUMES_CREATE=n' answer.ini
sed -i '/^CONFIG_NEUTRON_ML2_TYPE_DRIVERS/cCONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan' answer.ini
sed -i '/^CONFIG_NEUTRON_ML2_VXLAN_GROUP/cCONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5' answer.ini
sed -i '/^CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS/cCONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex' answer.ini
sed -i '/^CONFIG_NEUTRON_OVS_BRIDGE_IFACES/cCONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0' answer.ini
sed -i '/^CONFIG_NEUTRON_OVS_TUNNEL_IF/cCONFIG_NEUTRON_OVS_TUNNEL_IF=eth1' answer.ini
sed -i '/^CONFIG_PROVISION_DEMO=/cCONFIG_PROVISION_DEMO=n' answer.ini
CONFIG_DEFAULT_PASSWORD | 设置一个默认密码(一般不会使用,只有生成随机密码失败的时候使用) |
CONFIG_SWIFT_INSTALL | 是否开启结合Ceph分布存储 |
CONFIG_NTP_SERVERS | 时间同步服务器的IP地址 |
CONFIG_CINDER_VOLUMES_CREATE | 是否自动创建cinder-volumes,位置空间随机(一般不开启,使用人工创建) |
CONFIG_NEUTRON_ML2_TYPE_DRIVERS | 选择使用网络的格式: 'local','flat(公网使用的扁平网络)','vlan','gre','vxlan(内网用于相互隔离的网络,防止他人网络攻击)' |
CONFIG_NEUTRON_ML2_VXLAN_GROUP | 设置组播地址:239开头的网络 |
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS | 设置一个虚拟网络(交换机),和不同虚拟网络不同是是让物理网卡成为一个该交换机的端口,这样让虚拟机可以和外界的物理机进行数据通信 |
CONFIG_NEUTRON_OVS_BRIDGE_IFACES | 把哪个真实网卡变成虚拟交换机的一个端口 |
CONFIG_NEUTRON_OVS_TUNNEL_IF | 让哪个网卡成为隧道网卡,和VPN理论相同,目的是让虚拟机可以和其他物理机的虚拟机进行通信 |
CONFIG_PROVISION_DEMO | 是否开启测试DEMO |
5. 执行安装
先将注意点:
1. 执行前,把环境和应答文件检查一次
2. 一旦开始执行不可以用任何方法打断!!
3. 如果开启后发现有问题,唯一的解决方法是等待执行结束后报错,然后等程序结束后修改再重新执行操作
[root@openstack ~]# packstack --answer-file answer.ini
**** Installation completed successfully ******
6. 修正Horizon BUG
sed -i '/WSGIProcessGroup/a\ WSGIApplicationGroup %{GLOBAL}' /etc/httpd/conf.d/15-horizon_vhost.conf
systemctl restart httpd
7. 获取管理员帐号密码,查看文件内容 /root/keystonerc_admin
Openstack
其工作原理就是,让一个真实机器中的一个虚拟机器共享出去,让用户在网络上使用访问,这就是云主机了
那么最大的难点也就是如何让虚拟机能和外界通信,这使用的是OVS网桥技术
OVS网桥
工作原理是,搭建一个虚拟网络(交换机),把一个物理网卡成为这个交换机的一个端口,这样,虚拟服务器就可以把数据给这个交换机再从这个端口把数据传递出去,实现和外界的通信。
在搭建Openstack后,指定的物理网卡会失去IP地址,转而由虚拟交换机获取该IP,实现虚拟机和外界真机的数据通信,而网络配置文件也会被修改,配置信息如下
虚拟交换机的网络配置文件
/etc/sysconfig/network-scripts/ifcfg-br-ex
ONBOOT="yes"
NM_CONTROLLED="no"
IPADDR="192.168.1.1"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.254"
DEVICE=br-ex
NAME=br-ex
DEVICETYPE=ovs
OVSBOOTPROTO="static"
TYPE=OVSBridge
真实网卡的网络配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex
ONBOOT=yes
BOOTPROTO=none
搭建后,就可以使用网页进行访问了,然后进行操作(cloud_3)
非管理员用户具有以下权限
1. 启动实例
2. 创建卷和快照
3. 创建镜像
4. 分配浮劢IP
5. 创建网络和路由器
6. 创建防火墙以及规则、规则策略
7. 查看网络拓扑、项目使用概况等
Glance磁盘格式 | |
raw | 非结构化磁盘镜像格式 |
vhd | VMware、Xen、Microsoft、VirtualBox等均支持的通用磁盘格式 |
vmdk | 是Vmware的虚拟磁盘格式 |
vdi | VirtualBox虚拟机和QEMU支持磁盘格式 |
iso | 光盘数据内容的归档格式 |
qcow2 | QEMU支持的磁盘格式。空间自动扩展,并支持写时复制copy-on-write |
镜像容器格式 | |
bare | 镜像中没有容器或元数据封装 |
ovf | 一种开源的文件规范,描述了一个开源、安全、有效、可拓展的便携式虚拟打包以及软件分布格式 |
ova | OVA归档文件 |
aki | 亚马逊内核镜像 |
ami | 亚马逊主机镜像 |