准备环境 (真机)
禁用 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
#################################################################################
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