创建kvm虚拟机以及搭建openstack平台

准备环境 (真机)

禁用 selinux 配置文件 /etc/selinux/config

SELINUX=disabled

禁用 firewalld

systemctl stop firewalld //关闭防火墙,但当其他应用程序调用到防火墙时,会再次启动防火墙

systemctl (un)mask firewalld //注销防火墙服务,将服务的链接改为 /dev/null,其他程序无法调用防火墙。

1 yum 源的安装和配置(网络yum源)

光盘作为 yum 源 CentOS7-1708.iso (共9591包)

有 repodata 目录的才可以作为 yum 源

自定义 yum 源

创建一个 repodata

createrepo . (注意别丢了点“ . ”)

更新

createrepo --update .

2 dns 服务

3 时间服务器

#------------------------------------------------------------------------#

#################################################

虚拟化

实现程度:

----完全虚拟化:cpu也虚拟

----部分虚拟化: vm发出cpu指令----》kvm------》物理机cpu----》kvm-----》vm的cpu

----硬件辅助虚拟化:vm发出cpu指令----》kvm------》物理机cpu----》vm的cpu

三大组块: KVM /QEMU /LIBVIRTD

-KVM :linux内核模块,需要cpu支持 ---》 lsmod | grep kvm

-QEMU: 虚拟化仿真工具,完成对硬件的虚拟化

-Libvirt:虚拟化管理工具,提供客户端程序virsh,virt-install,virt-manager,virt-view

必备软件:

qemu-kvm 提供底层仿真支持

libvirt-daemon 守护进程

libvirt-client 客户端管理软件

libvirt-daemon-driver-qemu libvirtd 连接 qemu 的驱动

#######################################################################

virsh 命令

连接virt服务器:

virsh -c qemu:///system #管理本机vm ,-c qemu:///system 可缺省;c---》connect

virsh -c qemu+ssh://176.130.3.38/system #远程管理3.38上的vm

产生虚拟磁盘(raw格式和qcow2格式)

qemu-img create -f raw test.img 10G //划分出10G空间

qemu-img create -f qcow2 test.img 10G //cow写时复制,先不给10G,但最大只能给10G

依靠后端盘产生前端镜像

qemu-img create -f qcow2 -b 后端盘路径 前端盘路径 磁盘大小

其他选项:

-convert 转换磁盘格式

做快照:

-snapshot 管理磁盘快照

qemu-img snapshot -c 快照名 镜像名

qemu-img snapshot -c snapshot01 test.qcow2 //为镜像test.qcow2创建快照

qemu-img snapshot -c snapshot02 test.qcow2 //删除快照

qemu-img snapshot -l test.qcow2 //列出test.qcow2镜像的所有快照

注意:快照的存在依托于镜像,若镜像被删除了,则快照也不复存在。

交换机管理:

net-list //列出活跃状态的虚拟网桥

net-list --all //列出所有虚拟网桥

net-define vbr.xml //创建虚拟网桥

net-undefine vbr //删除虚拟网桥

net-start vbr //启动虚拟网桥

net-destory vbr //停止虚拟网桥

net-edit vbr //编辑网桥vbr的配置

net-autostart vbr //设置vbr为开机自启

net-autostart --disabled vbr //取消vbr的开机自启

虚拟机管理:

virsh nodeinfo //kvm服务器的信息

virsh dominfo 虚拟机名 //查看虚拟机信息

list //列出活跃状态的虚拟机

list --all //列出所有虚拟机

define //创建虚拟机

undefine //删除虚拟机

start|reboot|shutdown 虚拟机名 //开机|重起|关机

destory 虚拟机名 //强制关机

autostart 虚拟机名 //设置为开机自起

autostart --disable 虚拟机名 //取消开机自起

systemctl restart libvirtd //重起服务

################################################################

新建虚拟网桥,使连接该网桥的虚拟机可以上网。

1、编写配置文件

cat /etc/libvirt/qemu/network/vbr.xml

<network>

<name>vbr</name> //名字随意起

<uuid>81092586-7b05-4d87-be79-204128ea5188</uuid> //删除此行,回自己生成

<forward mode='nat'/> //使用nat模式,使虚拟机可以上网;若不需要上网,则移除此行配置。

<bridge name='vbr' stp='on' delay='0'/>

<mac address='52:54:00:21:b4:36'/> //删除此行,会自己生成

<ip address='192.168.5.254' netmask='255.255.255.0'> //是虚拟网桥的ip,同时也是该网段的网关

<dhcp> //配置DHCP,调用dnsmasq提供dns、dhcp等功能

<range start='192.168.5.100' end='192.168.5.200'/>

</dhcp>

</ip>

</network>

2、创建并启动虚拟网桥 vbr

virsh net-define vbr.xml

virsh net-start vbr

virsh net-autostart vbr //设置为开机自起

--------------------------------------------------------------------------------------------

补充:若交换机不需要上网,则xml配置内容如下:

<network>

<name>private1</name>

<bridge name='private1' stp='on' delay='0'/>

<domain name='private1'/>

<ip address='192.168.4.254' netmask='255.255.255.0'>

<dhcp>

<range start='192.168.4.100' end='192.168.4.200'/>

</dhcp>

</ip>

</network>

##################################################################

创建后端盘:

1、cd /var/lib/libvirt/images

2、 qemu-img create -f qcow2 test.img 8G

3、将光盘挂载到/var/ftp或者/var/www/html下

4、新建虚拟机,选择网络安装系统(ftp或者http),磁盘选择 新建的test.img。网络选择vbr,这样虚拟机可以上网。

################################################################################

初始化后端盘:

一、为虚拟机配置网络yum,配置签名检查;安装基本软件

vi /etc/yum.repos.d/centos7.repo

[centos]

name=centos

baseurl=http://192.168.5.254/centos

gpgcheck=1

enabled=1

解决网络yum源的安全性:(OpenStack需要)

1、将配置文件中的gpgcheck改为1。

2、导入key:

rpm --import RPM-GPG-KEY-CentOS-7 //验证数字签名的ket可以在yum源的光盘中找到,也可去官方下载

使用 yum provides vim / ifconfig 查找需要安装的包。

yum list | grep bash -----》 bash-completion.noarch //安装tab键补全软件,要重起虚拟机生效

安装 lftp、lrzsz、bridge-utils

lftp sftp://176.130.3.57 -u root //lftp可以上传下载文件 get下载,put上传

二、空路由

禁用空路由:

cat /etc/sysconfig/network

NOZEROCONF="yes"

systemctl restart network

ip r s

三、禁用selinux、删除firewalld、删除NetworkManager

1、 修改 /etc/selinux/config

SELINUX=disabled

2、停止 firewalld NetworkManager

systemctl stop firewalld

systemctl stop NetworkManager

3 、卸载

yum remove -y NetworkManager-* firewalld-* python-firewall

四 、配置网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 //配置为自动获取ip

# Generated by dracut initrd

DEVICE="eth0" //要与文件名一致

ONBOOT="yes" //启动引导时加载

NM_CONTROLLED="no" //不支持NetworkManager管理

TYPE="Ethernet" // 可以为Ethernet 和 Bridge

BOOTPROTO="dhcp" //dhcp、none、static

#IPADDR="192.168.1.50"

#PREFIX="24"

#GATEWAY="192.168.1.254"

重启机器

#####################################################

五、console、扩展分区软件、fstab、语言、清理、undefine 虚拟机

添加console串口终端,使支持命令:virsh console 虚拟机名

1、修改配置文件cat /etc/default/grub

GRUB_TIMEOUT=5

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"

GRUB_DEFAULT=saved

GRUB_DISABLE_SUBMENU=true

GRUB_TERMINAL="serial console"

GRUB_SERIAL_COMMAND="serial --speed=115200"

GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=ttyS0,115200n8"

GRUB_DISABLE_RECOVERY="true"

GRUB_DISABLE_LINUX_UUID="true"

GRUB_ENABLE_LINUX_LABEL="true"

2、重新生成grub.cfg

grub2-mkconfig -o /boot/grub2/grub.cfg

3、重起虚拟机,使用virsh console验证

4、将/etc/fstab 文件中的 UUID 手工修改成系统设备

blkid

/dev/vda1: UUID="2e7c1feb-4a86-4457-a34d-d1436d30c628" TYPE="xfs"

vim /etc/fstab

/dev/vda1 / xfs defaults 0 0

5、安装分区扩展软件

yum install -y cloud-utils-growpart

//在新生成的虚拟机上操作,若新生成的虚拟机的磁盘与原始盘大小不一致时才需要此操作

扩展磁盘分区空间(让 /dev/vda1 变大) /usr/bin/growpart /dev/vda 1

扩展文件系统识别空间(让 df -h 可使用空间变大)

/usr/sbin/xfs_growfs /

6、 关闭虚拟机后设置语言环境,并执行信息清理工作(在物理机删嗯执行)

设置语言为英文 LANG=en_US.UTF-8 //如此才能在虚拟机上执行 growpart 、xfs_growfs

virt-sysprep -d centos7.0

7、删除虚拟机的定义:

virsh undefine centos7.0

至此,前端盘完美生成---/var/lib/libvirt/imges/test.img

####################################################################

快建虚拟机

1、生成前端盘:

cd /var/lib/libvirt/imges/

qemu-img create -f qcow2 -b test.img node1.img

2、修改xml 配置文件

cat /etc/libvirt/qemu/node.xml

<domain type='kvm'>

<name>node</name> //虚拟机名字

<memory unit='KB'>2097152</memory> //虚拟机可使用的最大内存

<currentMemory unit='KB'>2097152</currentMemory> //虚拟机启动时使用的内存

<vcpu placement='static'>2</vcpu> //cpu核数

<os>

<type arch='x86_64' machine='pc'>hvm</type>

<boot dev='hd'/> //从硬盘引导启动

<bootmenu enable='yes'/>

<bios useserial='yes'/>

</os>

<features> //电源配置

<acpi/>

<apic/>

</features>

<cpu mode='host-passthrough'>

<topology sockets='1' cores='1' threads='2'/> // 1*2=2----》与第5行一致。可删除,系统会自动计算

</cpu>

<clock offset='localtime'/>

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>restart</on_crash>

<devices>

<emulator>/usr/libexec/qemu-kvm</emulator>

<disk type='file' device='disk'>

<driver name='qemu' type='qcow2'/>

<source file='/var/lib/libvirt/images/node.img'/>

<target dev='vda' bus='virtio'/>

</disk>

//复制上面内容,修改红色部分,可以给虚拟机添加磁盘,虚拟机关起再起后生效

<interface type='bridge'>

<source bridge='vbr'/> //交换机名字

<model type='virtio'/>

</interface>

//复制上面内容,修改红色部分,可以给虚拟机添加网卡,虚拟机关起再起后生效

<channel type='unix'>

<target type='virtio' name='org.qemu.guest_agent.0'/>

</channel>

<serial type='pty'></serial>

<console type='pty'>

<target type='serial'/>

</console> //console串口连接配置

<memballoon model='virtio'></memballoon>

</devices>

</domain>

3、注册并启动虚拟机:

virsh define /etc/libvirt/qemu/node.xml

virsh start node

//若新的虚拟机磁盘和后端盘的大小不一致,则执行以下操作(在新建虚拟机上执行):

扩展磁盘分区空间(让 /dev/vda1 变大) //在新生成的虚拟机上操作

/usr/bin/growpart /dev/vda 1

扩展文件系统识别空间(让 df -h 可使用空间变大)

/usr/sbin/xfs_growfs /

--------------------------------------------------------------------------------

补充:xml配置文件祥解:

– 保存 node 虚拟机配置文件

virsh dumpxml node >demo.xml

– 清除模板配置

virsh undefine node

– xml 模板

– <!-- 是注释的开始

--> 是注释的结尾

– xml 标签必须成对出现

– <keyword> ... ... </keyword>

<domain type='kvm' id='4'>

<name>centos7.0</name>

<uuid>8413f30a-c978-4796-a28f-8ba9fe74b759</uuid>

<memory unit='KiB'>2097152</memory>

<currentMemory unit='KiB'>2097152</currentMemory>

– id=4 个性化设置 ,去掉

– uuid 去掉

– memory unit 虚拟机最大使用内存,可以手劢调整

– currentmemory 创建虚拟机使用内存

– cpu 设置,可以调整

<vcpu placement='static'>2</vcpu>

– 资源设置,可以初除

<resource> ... ... </resource>

– 系统配置及引导设备,丌需要修改

<os>

<boot dev='hd'/>

</os>

– 电源相关配置无需修改

<features> ... ... </features>

– cpu配置,可以修改成使用真机cpu

<cpu ... ... />

<cpu mode='host-passthrough'></cpu>

– 时钟相关配置,可以初除

<clock ... ... </clock>

– 重启,关机,强制关闭对应命令

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>destroy</on_crash>

– 内存及硬盘休眠相关设置,可以初除

<pm> ... ... </pm>

– 仿真设备相关配置

<devices> ... ... </devices>

– 其他配置

– 驱劢安全标签,可初除

<seclabel> ... ... </seclabel>

仿真设备配置

– 总线地址,别名配置,都可以初除

<address ....

<alias ...

– 硬盘配置,需要修改

<emulator>/usr/libexec/qemu-kvm</emulator>

<disk ... ... </disk>

– usb 相关设备配置,可以初除

<controller type='usb'

仿真设备配置

– type='pci' pci总线设备,可初除

– type='virtio-serial' 串口设备需要保留串口终端

– type='network' 网络配置需要修改

– type='pty' 串口终端,需要保留

– type='unix' 虚拟机通讯控制接口

– type='spicevmc' 图形图像相关配置可以初除

– type='tablet' 数位板,可以初除

仿真设备配置

– type='mouse' 鼠标,保留

– type='keyboard' 键盘保留

– graphics、video 图形图像显卡相关配置,可以初除

– sound 声卡相关配置,可以初除

– redirdev 设备重定向,可以初除

– memballoon 内存气泡,可以劢态调整内存

###################################################################

guestmount

– 支持离线挂载 raw、qcow2 格式虚拟机磁盘

– 可以在虚拟机关机的情冴下,直接修改磁盘中的文档

– 方便对虚拟机定制、修复、脚本维护

---若修改原始盘,则前端盘要全部删除;若修改后端盘,则对原始盘没有影响

!!! 需要注意 SELinux 机制的影响

基本用法:

guestmount -a 虚拟机磁盘路径 -i /挂载点

chroot /mnt #将/mnt作为当前的假根,---->exit退出

######################################################

dns 服务(物理机做为服务器.实现转发即可)

yum install bind bind-chroot

编辑配置文件 named.conf

listen-on port 53 { 192.168.5.254; };

allow-query { any; };

forwarders { 202.106.196.115; }; //中国联通的NTP服务器

dnssec-enable no;

dnssec-validation no;

#####################################################################

时间服务器(真机做服务器,虚拟机做客户端)

yum install -y chrony

server:配置 /etc/chrony.conf

server ntp1.aliyun.com iburst

bindacqaddress 0.0.0.0

allow 0/0

client:配置 /etc/chrony.conf

server 192.168.1.254 iburst

检查状态(虚拟机上执行)

chronyc sources -v

* 同步成功,+ 备胎 , ? 同步失败

#####################################################################

Jenkins 产品上线自动化管理 java+nginx

堡垒机

服务器购买:

svn

teamviewer安装:-------qt5

1、依赖包yum源:

http://dl.fedoraproject.org/pub/epel/7/x86_64/

2、官网下载teamviewer

wget https://download.teamviewer.com/download/linux/teamviewer.x86_64.rpm?ml_count=&pid=-ml_count--ml_acc--ml_eg--lae_eg--lae_vid-

#################################################################################

OpenStack是什么:2010诞生

是一套IaaS解决方案

OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的项目

OpenStack是一个开源的云计算管理平台

以Apache许可证为授权

Openstack主要组件: 6个组建

Horizon

– 用于管理Openstack各种服务的、基于web的管理接口

– 通过图形界面实现创建用户、管理网络、启劢实例等操作

Keystone

– 为其他服务提供认证和授权的集中身份管理服务

– 也提供了集中的目录服务

– 支持多种身份认证模式,如果密码认证、令牌认证、以及AWS(亚马逊Web服务)登陆

– 为用户和其他服务提供了SSO认证服务

Neutron

-- 控制虚拟机之间的通信

– 一种软件定义网络服务

– 用于创建网络、子网、路由器、管理浮劢IP地址

– 可以实现虚拟交换机、虚拟路由器

– 可用于在项目中创建VPN

Cinder

– 为虚拟机管理存储卷的服务

– 为运行在Nova中的实例提供永久的块存储

– 可以通过快照迚行数据备份

– 经常应用在实例存储环境中,如果数据库文件

Nova

– 在节点上用于管理虚拟机的服务

– Nova是一个分布式的服务,能够不Keystone交互实现

认证,不Glance交互实现镜像管理

– Nova被设计成在标准硬件上能够迚行水平扩展

– 启劢实例时,如果有需要则下载镜像

Glance

– 扮演虚拟机镜像注册的角色

– 允许用户为直接存储拷贝服务器镜像

– 这些镜像可以用于新建虚拟机的模板

#################################################################

安装Openstack:(node上装,将主机名改为openstack)

1、 配置 openstack yum 源

加上系统盘 共 12 个yum源, 10731 包

注意:系统的光盘pgpcheck=1,Openstack的yum源的gpgcheck=0

# 环境检查

sestatus 检查 selinux 是否关闭了

rpm -qa |grep -P "firewalld|NetworkManager" 是否卸载了 NetworkManager 和 firewalld

chronyc sources -v 检查时间服务器是否可用

nslookup 检查 dns 服务器是否可用

yum repolist 检查包 10731 个

free -m 查看内存是否够 8G

lsblk 查看是否有 20G 的 vdb 设备

ifconfig 查看是否两块网卡,而且都能 ping 通

2、配置卷组,安装依赖软件包

yum install -y lvm2

pvcreate /dev/vdb

vgcreate cinder-volumes /dev/vdb

vgs

yum install -y qemu-kvm \

libvirt-daemon libvirt-client libvirt-daemon-driver-qemu \

python-setuptools //openstack的依赖包

3、安装 packstack,编辑 openstack 的应答文件

yum install -y openstack-packstack

创建安装 openstack 的应答文件

packstack --gen-answer-file=answer.ini //将会在当前目录下生成 answer.ini

vim应答文件 answer.ini

......

配置默认密码

11: CONFIG_DEFAULT_PASSWORD=Taren1

设置禁用 swift (对象存储) 模块

42: CONFIG_SWIFT_INSTALL=n

NTP 服务器地址

75: CONFIG_NTP_SERVERS=192.168.5.254

计算节点IP地址

98: CONFIG_COMPUTE_HOSTS=192.168.4.50

需要配置vxlan网络的 IP 地址

102: CONFIG_NETWORK_HOSTS=192.168.4.50

禁用自动创建 cinder-volumns 卷组

554: CONFIG_CINDER_VOLUMES_CREATE=n

设置网络支持协议

840: CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan

设置组播地址

876: CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5

设置虚拟交换机

910: CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex (物理交换机:虚拟交换机)

设置虚拟交换机所连接的物理网卡

921: CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0

设置隧道网络使用的网卡

936: CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1

禁用测试的DEMO

1179:CONFIG_PROVISION_DEMO=n

4、安装 openstack

packstack --answer-file=answer.ini

安装完成后会在当前目录下生成 文件 keystonerc_admin ,此文件有horizonweb页面登陆的用户名和密码

5、查看网卡配置文件:

cat /etc/sysconfig/network-scripts/ifcfg-br-ex 配置br-ex为外部OVS网桥

cat /etc/sysconfig/network-scripts/ifcfg-eth0 配置eth0为外部OVS网桥的端口,虚拟机和br-ex网桥通过此网卡与真实交换机连接

6、验证OVS配置

1. ovs-vsctl show

2. ip -o addr show

#######################################################################

Horizon配置

-----基于python的django web框架迚行开发

1、Horizon BUG 处理

cat /etc/httpd/conf.d/15-horizon_vhost.conf

.......

ServerAlias localhost

WSGIDaemonProcess apache group=apache processes=3

threads=10 user=apache

WSGIProcessGroup apache

WSGIApplicationGroup %{GLOBAL} <--- 这里添加

apachectl graceful //重新载入配置文件

2、firefox http://192.168.5.50 登陆Horizon 管理页面

3、项目管理

项目:

---- 一组隔离的资源和对象。将这组资源提供给客户

用户:

---- 创建一个普通用户

################################################################################

命令行修改用户密码:

source keystonerc_admin

openstack user set --password 123456 user1

################################################################

安装额外计算节点:node2上面,将主机名改为nova01

1、准备环境:

estatus 检查 selinux 是否关闭了

rpm -qa |grep -P "firewalld|NetworkManager" 是否卸载了 NetworkManager 和 firewalld

chronyc sources -v 检查时间服务器是否可用

nslookup 检查 dns 服务器是否可用

yum repolist 检查包 10731 个

free -m 查看内存是否够 6G

ifconfig 查看是否两块网卡,而且都能 ping 通

2、安装依赖包:

yum install -y qemu-kvm \

libvirt-daemon libvirt-client libvirt-daemon-driver-qemu \

python-setuptools //openstack的依赖包

3、设置主机名:

vim /etc/hosts

192.168.5.50 openstack

192.168.5.60 nova01

拷贝一份给管理节点。

4、主节点openstack上修改应答文件 answer.ini

计算节点IP地址

98: CONFIG_COMPUTE_HOSTS=192.168.5.50,192.168.5.60 //添加节点

需要配置vxlan网络的 IP 地址

102: CONFIG_NETWORK_HOSTS=192.168.5.50,192.168.5.60 //添加节点

5、主节点openstack上重新部署:

cd /root

packstack --answer-file=answer.ini

猜你喜欢

转载自blog.csdn.net/cron_zzx/article/details/81842987