糖豆豆 bio photo

糖豆豆

专注于虚拟化, 分布式存储, IaaS

Email

Overview

0. 安装CentOS7

0.0 使用Minimal模式安装

0.1 基本网络配置

  • 关闭zeroconf
$ sudo cat /etc/sysconfig/network | grep NOZEROCONF
NOZEROCONF=yes
  • 关闭NetworkManager服务
$ sudo systemctl stop NetworkManager.service 
$ sudo systemctl disable NetworkManager.service
$ sudo systemctl status NetworkManager.service  
NetworkManager.service - Network Manager
 Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
 Active: inactive (dead) since 一 2016-02-01 18:05:42 CST; 18s ago
  • 所有主机必须使用相同的网络接口名称,如eth, em
  • 为了增强网络的可靠性,尽量配置多网卡绑定,多主机使用相同的绑定接口名称,如bond0等

注意: 如果做了多网卡绑定,对原始的网络接口名称不做强制要求

  • 尽可能区分存储网络,管理网络和业务网络,如果无法分三个网络,至少保证存储网络独立

0.2 VLAN配置

  • 加载8021Q内核模块
$ sudo modprobe 8021q
$ sudo lsmod | grep 8021q
8021q                  29022  0 
garp                   14384  1 8021q
mrp                    18542  1 8021q
  • 配置网络接口

    以下实例中,VLAN Tag 为16,物理网卡为em1;另外,当多个网络同时存在时,只能一个网卡设置GATEWAY属性。

$ cat /etc/sysconfig/network-scripts/ifcfg-em1.16
VLAN=yes
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
DEVICE=em1.16
IPADDR=172.16.0.10
PREFIX=16

0.3 系统安全设置

  • 配置防火墙服务

注意: 暂时关闭防火墙,清空防火墙规则,待定义出所有需要的防火墙规则后再开启

$ sudo iptables -L -n
$ sudo iptables -P INPUT ACCEPT
$ sudo iptables -F
$ sudo iptables -X
  • 关闭SELinux

注意: 暂时关闭SELinux,待定义出所有所需的规则后再开启

将SELINUX设置为disabled,如下所示

$ sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

0.4 配置主机名

  • 在/etc/hosts文件中关联本机IP和主机名

1. 配置虚拟化环境

1.0 安装依赖包

  • 安装虚拟化组件
$ sudo yum groupinstall 'Virtualization Host'

1.1 配置libvirtd

  • /etc/libvirt/libvirtd.conf
$ sudo sed -i 's/#listen_tls = 0/listen_tls = 0/g' /etc/libvirt/libvirtd.conf
$ sudo sed -i 's/#listen_tcp = 1/listen_tcp = 1/g' /etc/libvirt/libvirtd.conf
$ sudo sed -i 's/#auth_tcp = "sasl"/auth_tcp = "none"/g' /etc/libvirt/libvirtd.conf
  • /etc/sysconfig/libvirtd
$ sudo sed -i 's/#LIBVIRTD_ARGS="--listen"/LIBVIRTD_ARGS="--listen"/g' /etc/sysconfig/libvirtd

1.2 配置qemu

  • /etc/libvirt/qemu.conf

    关于QEMU的配置,还有很多优化的空间,需要深入的研究

$ sudo sed -i 's/#user = "root"/user = "root"/g' /etc/libvirt/qemu.conf
$ sudo sed -i 's/#group = "root"/group = "root"/g' /etc/libvirt/qemu.conf

1.3 启动libvirtd服务

  • 启动libvirtd
$ sudo systemctl start libvirtd
  • 确认libvirtd服务是否被设置为开机自启动
$ sudo systemctl is-enabled libvirtd.service
enabled
  • 将libvirtd服务设置为开机自启动

    如果上一步返回的结果是enabled,则跳过此步

$ sudo systemctl enable libvirtd.service

1.4 libvirt-guests服务

详情参考 “libvirt配置

1.5 配置dnsmasq服务

libvirtd服务配置的默认虚拟网桥使用dnsmasq作为DHCP服务为虚拟机分配IP,SunrunIaaS中也使用了dnsmasq来分配IP.如果同时使用会引起冲突,所以需要将默认虚拟网桥删除,并关闭dnsmasq服务.

  • 删除默认虚拟网桥(virbr0)定义

查看default网桥是否存在

$  ifconfig virbr0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
(以下略)

$ sudo virsh net-list | grep default
default              active     yes           yes
  • 删除default网桥

注意: 如果上一步中,没有virbr0, 且default网桥不存在,则跳过这一步

$ sudo virsh net-destroy default
Network default destroyed
$ sudo virsh net-undefine default
Network default has been undefined
  • 确认dnsmasq服务不会开机自启动

    • 查询dnsmasq服务状态
$ sudo systemctl is-enabled dnsmasq.service
disabled
  • 关闭dnsmasq服务开机自启动

注意: 如果上一步为disable,则跳过这一步

$ sudo systemctl disable dnsmasq.service

1.6 重启服务器

为了确保配置有效,完成以上配置后,请务必重启服务器.

服务器重启后,检查以下项目:

  • zeroconfig 已经关闭
$ route -n |grep 169.254.0.0
(输出为空)
  • libvirtd 服务开机自启动,且已经正在运行
$ sudo systemctl status libvirtd
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2016-01-31 17:47:56 CST; 1min 10s ago
(以下略)
  • 无virbr0 网络接口
$ ifconfig virbr0
virbr0: error fetching interface information: Device not found
  • 没有 default 虚拟网桥
$ sudo virsh net-list | grep default
(此处无任何输出)
  • dnsmasq 服务未开机自启动,且未启动
$ sudo systemctl status dnsmasq
● dnsmasq.service - DNS caching server.
Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; disabled; vendor preset: disabled)
Active: inactive (dead)
  • SELinux已关闭

注意: 当前设置为关闭SELinux,如果开启防火墙设置,此处会不同

$ sudo sestatus
SELinux status:                 disabled
  • 防火墙(firewalld) 服务未开机自启动,且当前未启动

注意: 当前设置为关闭防火墙,如果开启防火墙设置,此处会不同

$ sudo systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

Active: inactive (dead)
  • 防火墙规则为空

注意: 当前设置为关闭防火墙,如果开启防火墙设置,此处会不同

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination