在KVM中安装配置nginx负载
KVM宿主机为centos 6.5 ,虚拟机为centos 6.6,nginx版本为1.4.7
1、 检查CPU 的支持
egrep `^flags.*(vmx|svm)` /proc/cpuinfo
2、安装并启动
yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt libvirt-python python-virtinst
yum groupinstall KVM
启动
service messagebus start
service haldaemon start
service libvirtd start
chkconfig messagebus on
chkconfig haldaemon on
chkconfig libvirtd on
检测
virsh -c qemu:///system list
/sbin/lsmod | grep kvm
3、配置网桥
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
BROADCAST=10.207.20.255
IPADDR=10.207.20.200
NETMASK=255.255.255.0
NETWORK=10.207.20.0
ONBOOT=yes
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
BRIDGE=br0
重起网络服务生效
service network restart
echo 1 > /proc/sys/net/ipv4/ip_forward
重启网络后用10.207.20.200登录(即网桥IP)
4、安装vncserver并开启
yum install tigervnc-server
/etc/init.d/vncserver start
检查
netstat -nulpt | grep vnc
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 29167/Xvnc
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 29167/Xvnc
tcp 0 0 :::6001 :::* LISTEN 29167/Xvnc
表示vnc可以使用了
5、创建虚拟机
virt-install --name=nginx01 --ram 512 --vcpus=1 --disk path=/data/kvm/nginx01.img,size=20 --accelerate --cdrom /data/appsource/CentOS-6.6-x86_64-minimal.iso --graphics vnc,listen=0.0.0.0,port=5920, --network bridge=br01 --force —autostart
netstat -nulpt | grep 5920 查看端口是否启用
6、用realvnc viewer完成安装
realvnc闪退原因:输入密码连上后直接闪退,依次点Option—>Advanced-->Expert找到ColourLevel,默认值是pal8,修改为rgb222或full。
7、管理虚拟机
virsh --connect qemu:///system
8、克隆虚拟机
virt-clone --connect=qemu:///system -o nginx01 -n haproxy -f /data/kvm/haproxy.img
注:要在安装了重要软件后再克隆,节省时间
需修改vnc端口;MAC地址也是需要注意的
宿主机上修改:vi /etc/libvirt/qemu/haproxy.xml
9、安装nginx并配置负载
./configure 之前,先删除nginx的debug模式,源码目录下 auto/cc/gcc 删除
# debug
CFLAGS=“CFLAGS -g”
两行。
假设有三台服务器,配置其中一台nginx即可,
vim /etc/nginx/nginx.conf
upstream webservers {
ip_hash; #按每个访问IP的哈希结果分配,同一IP固定访问同一服务器,默认为轮询,其它还有fair、url_hash,nginx本身不支持url_hash,须安装nginx的hash软件包。
server 192.168.0.201 weight=1;#weight值越大,权重越高
server 192.168.0.202 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://webservers;
proxy_set_header X-Real-IP $remote_addr;
}
}