首先开启路由转发
#cd /e t c/sysctl.d/
#vim 99-sysctl.conf
net ipv4.ip_forward = 1
真机上配置虚拟网卡配置文件
[root@localhost ~]# cd /etc/libvirt/qemu/networks/
[root@localhost networks]# vim vbr.xml

vbr








[root@localhost networks]# virsh net-define vbr.xml //激活虚拟网卡
[root@localhost networks]# virsh net-start vbr //开启虚拟网卡
[root@localhost networks]# ifconfig
创建虚拟磁盘
[root@localhost ~]# cd /var/lib/libvirt/images/
[root@localhost images]# qemu-img create -f qcow2 node.qcow2 16G
装虚拟机:
网络安装--》提供URL地址ftp://176.233.4.241/centos7 选择根据安装介质自动侦测操作系统--》2G 内存+2个CPU--》选择创建自定义存储--》选择自己创建的qcow2--》起名 选择在安装前自定义配置,选择网络--》完成
装机配置
选择英语环境--》选择最小安装--》选择手动配置磁盘--》选择标准分区,添加根分区--》去选kdump--》开始安装
配置系统:(除了装包,还要卸载firewalld,NetworkManager,禁用SElinux)
#cd /etc/yum.repos.d/
#rm -rf *
#vi dvd.repo //配yum源
#yum provides ifconfig
yum -y install net-tools
#yum provides vim
#yum -y install vim-enhanced
#yum provides ip
#yum -y install iproute
#yum -y install bash-completion //table键补齐

配DNS
#vim /e tc/resolve.conf
nameserver 176.233.0.227

禁用空路由
#vim /e tc/sysconfig/network
NOZEROCONF=”yes”

配置console连接
[root@localhost ~]# vim /etc/sysconfig/grub
GRUB_CMDLINE_LINUX="rhgb quiet console=tty0 console=ttyS0" //修改这一行 rhgb quiet//显示过程
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg //查找启动项

测试console连接
#virsh console centos7.0 //直接连接虚拟机名称
创建虚拟机模板
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
#Generated by dracut initrd
DEVICE="eth0"
ONBOOT=yes
NETBOOT=yes
IPV6INIT=no
BOOTPROTO=dhcp
TYPE=Ethernet

[root@localhost ~]# cd /etc/libvirt/qemu/
[root@localhost qemu]# cp centos7.0.xml centos7.xml //拷贝配置文件
[root@localhost qemu]# virsh undefine centos7.0 //删除虚拟机
[root@localhost qemu]# vim centos7.xml //编辑配置文件删除UUID、MAC地址 能多删不能少删

创建虚拟机
1、创建虚拟机配置文件
[root@localhost qemu]# cp centos7.xml node1.xml
[root@localhost qemu]# vim node1.xml
node1

或者:[root@localhost qemu]# sed 's/node/node1/g' centos7.xml > node1.xml
2、创建虚拟机磁盘文件
[root@localhost images]# cd /etc/libvirt/qemu/
[root@localhost qemu]# virsh define node1.xml

[root@localhost qemu]# cd /var/lib/libvirt/images/
[root@localhost images]# qemu-img create -b node.qcow2 -f qcow2 node1.img

[root@localhost qemu]# virsh start node1 //启动虚拟机
[root@localhost qemu]# virsh console node1 //console连接

上面咱们把模板做好 下来部署openstack环境
基础环境检查

  1. 禁用 selinux
  2. 卸载 firewalld
  3. 卸载 NetworkManager
  4. 配置主机IP地址
  5. 配置主机yum客户端
  6. 创建cinder-volumes的卷组
  7. 导入公钥
  8. 安装依赖的软件包

安装环境前的准备
物理机
安装配置dns, 能作为转发dns服务器即可
yum provides named
yum -y install bind-9.9.4-50.el7.x86_64
vim /etc/named.conf
options {
listen-on port 53 { 192.168.1.254; }; //这个是真机的 vbr 网桥的IP
//listen-on-v6 port 53 { ::1; }; ///注释掉这一行 IPV6 的
allow-query { any; }; ///这一行括号改成any

recursion yes;
forwarders { 176.233.0.227; }; //真机的DNS地址
dnssec-enable no; // yes 改成no
dnssec-validation no; // yes 改成no

systemctl restart named //重启服务
systemctl enable named //开机自起
安装配置时间服务器 chronyd server
vim /etc/chrony.conf //添加以下配置
server ntp1.aliyun.com iburst //指定阿里云的时间服务器
bindacqaddress 0.0.0.0 //默认只能自己访问 加上这一行允许任何人访问
allow 0/0
stemctl restart chronyd.service //重起服务
chronyc sources -v //测试成功同步与否
? 不成功 + 备胎 星 是成功 - 是有差距
^*120.25.115.20 2 10 377 782 -835us[ -789us] +/- 21ms

添加一个网桥 vbr1 不需要能上网
cd /etc/libvirt/qemu/networks/
cp vbr.xml vbr1.xml
vim vbr1.xml //vbr.xml参照前边的vbr.xml

vbr1







cd /etc/libvirt/qemu/networks/
virsh net-autostart vbr1 开机自启 网卡
配置2个虚拟机

1.安装管理节点最少 8G内存
单独添加一块硬盘给openstack cinder 使用20G
单独添加一块网卡 使用vbr1

      cd /etc/libvirt/qemu/
        cp centos7.example.xml   node1.xml   以下蓝的必须一样
        vim    node1.xml  
        
          node1                           //名字改成node1
          9               //大于给的内存 上面说的给8G 
          9 //大于给的内存
        
        
        
        
     
    
        
        
        
     
       
                     
                     
        
    
                     
                     
        

cd /var/lib/libvirt/images/
qemu-img create -b node.qcow2 -f qcow2 node1.img 200G
qemu-img create -f qcow2 disk.img 20G
cd /etc/libvirt/qemu/
virsh define node1.xml
virsh start node1
virsh console node1
yum -y install cloud-utils-growpart-0.29-2.el7.noarch
growpart /dev/vda 1 //这是先扩展空间
xfs_growfs / //在扩展文件系统
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
ONBOOT=yes
NETBOOT=no
IPV6INIT=no
BOOTPROTO=none
TYPE=Ethernet
IPADDR=192.168.2.10
PREFIX=24
GATEWAY=192.168.2.254
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT=yes
NETBOOT=no
IPV6INIT=no
BOOTPROTO=none
TYPE=Ethernet
IPADDR=192.168.1.10
PREFIX=24
GATEWAY=192.168.1.254
2.安装 nova 节点 最少5G 内存
单独添加一块网卡 使用vbr1

cd /etc/libvirt/qemu/
cp centos7.example.xml node2.xml 以下蓝的必须一样
vim node1.xml

node2 //名字改成node2
6 //大于给的内存
6 //大于给的内存












cd /var/lib/libvirt/images/
qemu-img create -b node.qcow2 -f qcow2 node2.img 200G
cd /etc/libvirt/qemu/
virsh define node2.xml
virsh start node2
virsh console node2
yum -y install cloud-utils-growpart-0.29-2.el7.noarch
growpart /dev/vda 1 //这是先扩展空间
xfs_growfs / //在扩展文件系统
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
ONBOOT=yes
NETBOOT=no
IPV6INIT=no
BOOTPROTO=none
TYPE=Ethernet
IPADDR=192.168.2.11
PREFIX=24
GATEWAY=192.168.2.254
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT=yes
NETBOOT=no
IPV6INIT=no
BOOTPROTO=none
TYPE=Ethernet
IPADDR=192.168.1.11
PREFIX=24
GATEWAY=192.168.1.254
部署安装环境
物理机
cd /var/ftp/
mkdir openstack
mkdir openstack.ex
vim /et c/fstab
/home/CentOS7-1708.iso /var/ftp/Centos7 iso9660 defaults 0 0
/home/RHEL7-extras.iso /var/ftp/openstack.ext iso9660 defaults 0 0
/home/RHEL7OSP-10.iso /var/ftp/openstack iso9660 defaults 0 0
/home/CentOS7-1708.iso RHEL7-extras.iso RHEL7OSP-10.iso 这三个镜像必须在物理机的/home下
[root@hanhan openstack]# pwd
/var/ftp/openstack
[root@hanhan openstack]# ls
docs rhel-7-server-rhceph-2-osd-rpms
rhel-7-server-openstack-10-devtools-rpms rhel-7-server-rhceph-2-tools-rpms
rhel-7-server-openstack-10-optools-rpms rhel-7-server-rhscon-2-agent-rpms
rhel-7-server-openstack-10-rpms rhel-7-server-rhscon-2-installer-rpms
rhel-7-server-openstack-10-tools-rpms rhel-7-server-rhscon-2-main-rpms
rhel-7-server-rhceph-2-mon-rpms version.txt

[root@hanhan openstack.ext]# ls
comps.xml Packages repodata version.txt
[root@hanhan openstack.ext]# pwd
/var/ftp/openstack.ext

2台虚拟机的部署
yum search wget
yum -y install wget.x86_64
wget ftp://176.233.4.242/Centos7/RPM-GPG-KEY-CentOS-7

rpm --import RPM-GPG-KEY-CentOS-7 导入公钥
配置YUM源
vim /etc/yum.repos.d/dvd.repo
[centos7]
name=centos7
baseurl=ftp://192.168.1.254/Centos7
enabled=1
gpgcheck=1 //必须是1
[openstack1]
name=centos7
baseurl=ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-devtools-rpms
enabled=1
gpgcheck=0
[openstack2]
name=centos7
baseurl=ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-optools-rpms
enabled=1
gpgcheck=0
[openstackopenstackopenstack3]
name=centos7
baseurl=ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-rpms
enabled=1
gpgcheck=0
[openstackopenstack4]
name=centos7
baseurl=ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-tools-rpms
enabled=1
gpgcheck=0
[openstack5]
name=centos7
baseurl=ftp://192.168.1.254/openstack/rhel-7-server-rhceph-2-mon-rpms
enabled=1
gpgcheck=0
[openstack6]
name=centos7
baseurl=ftp://192.168.1.254/openstack/rhel-7-server-rhceph-2-osd-rpms
enabled=1
gpgcheck=0
[openstack7]
name=centos7
baseurl=ftp://192.168.1.254/openstack/rhel-7-server-rhceph-2-tools-rpms
enabled=1
gpgcheck=0
[openstack8]
name=centos7
baseurl=ftp://192.168.1.254/openstack/rhel-7-server-rhscon-2-agent-rpms
enabled=1
gpgcheck=0
[openstack9]
name=centos7
baseurl=ftp://192.168.1.254/openstack/rhel-7-server-rhscon-2-installer-rpms
enabled=1
[openstack10]
name=centos7
baseurl=ftp://192.168.1.254/openstack/rhel-7-server-rhscon-2-main-rpms
enabled=1
gpgcheck=0
[openstack11]
name=centos7
baseurl=ftp://192.168.1.254/openstack.ext
enabled=1
gpgcheck=0
scp /etc/yum.repo.d/dvd/repo 192.168.1.11:/etc/yum.repo.d/

配置时间同步
vim /etc/chrony.conf
server 192.168.1.254 iburst
yum -y install ntpdate
ntpdate 192.168.1.254
在10这台虚拟机上部署
1.pvcreate /dev/vdb //创建物理卷
2.vgcreate cinder-volumes /dev/vdb创建逻辑卷名字是cinder-volumes 名字必须是这个
3.安装依赖包yum install -y qemu-kvm 、libvirt-client、libvirt-daemon 、 libvirt-daemon-driver-qemu、 python-setuptools

配置 packstack
安装packstack
[root@vh02 ~]# yum install -y openstack-packstack
[root@vh02 ~]# packstack --gen-answer-file answer.ini //创建一个应答文件的模板
修改应答文件
[root@nova ~]# vim answer.ini
CONFIG_DEFAULT_PASSWORD=Taren1 //11行设置个密码
CONFIG_SWIFT_INSTALL=n //42行
CONFIG_NTP_SERVERS=192.168.1.254 //75行 NTPserver 的地址
CONFIG_COMPUTE_HOSTS=192.168.1.10,192.168.1.11 //98行
CONFIG_COMPUTE_HOSTS=192.168.1.10,192.168.1.11 //102行必须是同一网段的
CONFIG_CINDER_VOLUMES_CREATE=n //554行 禁止主机自己创建逻辑卷
CONFIG_CINDER_VOLUMES_SIZE=20G //561行逻辑卷的大小和咱们上面创建的一致
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan //840行
CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5 //876行配置一个组播地址
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex //910行把一个物理网络映射给一个设备
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0 //921 绑定一个物理网络 上边指定的
CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1 //936 隧道网络配置
CONFIG_PROVISION_DEMO=n //1179 demo测试改成no

安装openstack
packstack --answer-file answer.ini
如果出现SSSE3报错
修改如图
openstack集群环境部署_第1张图片

配置下面的复合主机打V (勾) 2台虚拟机 关机执行
在11上装 libvirt-client 包
在执行安装命令就OK了
配置外部OVS网桥
配置br-ex为外部OVS网桥
以下是运行成功自动生成的
[root@nova ~]# cat /etc/sysconfig/network-scripts/ifcfg-br-ex
ONBOOT="yes"
NM_CONTROLLED="no"
IPADDR="192.168.1.66"
PREFIX="24"
GATEWAY="192.168.1.254"
DEVICE=br-ex
NAME=br-ex
DEVICETYPE=ovs //驱动协议
OVSBOOTPROTO="static" //手动配置
TYPE=OVSBridge
配置外部OVS网桥端口
• 配置eth0为外部OVS网桥的端口
[root@nova ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex
ONBOOT=yes
BOOTPROTO=none
验证OVS配置

  1. ovs-vsctl show
  2. ip -o addr show
    [root@nova ~]# ovs-vsctl show
    Bridge br-ex
    Controller "tcp:127.0.0.1:6633"
    is_connected: true
    fail_mode: secure
    ... ...
    Port br-ex
    Interface br-ex
    type: internal
    Port "eth0"
    Interface "eth0"

• 安装虽然没有报错,但默认无法打开 Horizon,这是
一个软件的配置 BUG
– /etc/httpd/conf.d/15-horizon_vhost.conf
– WSGIApplicationGroup %{GLOBAL}
ServerAlias localhost
WSGIDaemonProcess apache group=apache processes=3
threads=10 user=apache
WSGIProcessGroup apache
WSGIApplicationGroup %{GLOBAL} <--- 这里添加
重新载入配置文件 apachectl graceful基本配置

剩下的在图形界面操作这里不多做解释