Linux云计算——IaaS服务的OpenStack

云计算简介
   基于互联网的相关服务的增加、使用和交付的一个模式
   这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池
   分为IaaS(后端基础服务,包含公有云、私有云、混合云)、PaaS(开发平台服务)、SaaS(市场应用平台)

OpenStack
   OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的项目,就是一套IaaS解决方案,以Apache许可证为授权   搭建OpenStack需要的环境配置

Openstack主要组件

    1. Horizon  通过图形界面实现创建用户、管理网络、启劢实例等操作
    2. Keystone 为其他服务提供认证和授权的集中身份管理服务
    3. Neutron  进行定义网络服务
    4. Cinder   管理存储卷的服务
    5. Nova     在节点管理虚拟机的服务
    6. Glance   虚拟机镜像注册的角色
    7. Swift   管理对象存储的服务


搭建前的环境准备
     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

# 如果有nova节点,那么就修改下面两行(如果不希望openstack服务器做节点下面就不要写openstack的IP)
sed -i '/CONFIG_COMPUTE_HOST/cCONFIG_COMPUTE_HOST=服务器openstack的IP,服务器nova1的IP,服务器nova2的IP……' answer.ini
sed -i '/CONFIG_NETWORK_HOSTS/cCONFIG_NETWORK_HOSTS=服务器openstack的IP,服务器nova1的IP,服务器nova2的IP……' 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非结构化磁盘镜像格式
vhdVMware、Xen、Microsoft、VirtualBox等均支持的通用磁盘格式
vmdk是Vmware的虚拟磁盘格式
vdiVirtualBox虚拟机和QEMU支持磁盘格式
iso光盘数据内容的归档格式
qcow2QEMU支持的磁盘格式。空间自动扩展,并支持写时复制copy-on-write
镜像容器格式
bare镜像中没有容器或元数据封装
ovf一种开源的文件规范,描述了一个开源、安全、有效、可拓展的便携式虚拟打包以及软件分布格式
ovaOVA归档文件
aki亚马逊内核镜像
ami亚马逊主机镜像
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值