KVM虛擬化、MySQL、Nginx、RabbitMQ、Redis組件安裝指導
1 檢查服務器的配置信息
1.1 檢查服務器的CPU信息
[root@localhost iso]#cat /proc/cpuinfo | grep name | cut -d: -f2 | uniq -c
1.2 檢查服務器的內存信息
[root@localhost iso]# cat /proc/meminfo | grep MemTotal
MemTotal: 82510856 kB
2 檢查服務器是否支持虛擬化
在遠程終端中執行如下面命令,確定CPU是否支持虛擬化:
[root@localhost iso]#grep -E -o ‘vmx|svm‘ /proc/cpuinfo
vmx
vmx
如果有輸出,則證明服務器支持虛擬化。
3 安裝KVM相關基礎組件
3.1 執行下面的命令安裝KVM相關基礎環境
[root@localhost iso]#yum -y install kvm python-virtinst libvirt tunctl bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v
3.2 執行下面的命令安裝虛擬機管理工具
[root@localhost iso]#yum install libguestfs-tools –y
4 創建一個網橋
網橋相當於一個交換機,在物理服務器內部虛擬化出來的多臺虛擬機,虛擬機都是默認連接到創建的虛擬網橋上的。
4.1 給網橋創建一個配置文件並配置網絡參數
在Cent OS 6.X下面,網卡配置文件在下面的路徑中:/etc/sysconfig/network-scripts
當前物理服務器只連接了一根網線在一個物理網卡上,該物理網卡在系統中的標識為em1;
創建一個名稱為ifcfg-br0的網橋的配置文件,配置格式如下:
[root@localhost network-scripts]# cat ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.60
NETMASK=255.255.255.0
GATEWAY=10.0.0.1
DNS1=8.8.8.8
DEFROUTE=yes
該網橋需要由實際的物理網卡來承擔,因為只有一條網線連接在em1的網卡上,所以需要將em1加如br0的網橋中,編輯em1的配置文件:
[root@localhost network-scripts]# cat ifcfg-em1
DEVICE="em1"
ONBOOT="yes"
BRIDGE="br0"
BOOTPROTO=none
NM_CONTROLLED="no"
DEFROUTE=yes
NAME="System em1"
4.2 執行下面的命令創建一個網橋
[root@localhost ~]# brctl addbr br0
4.3 給網橋添加一個實際存在的物理卡
註意:該網卡必須接有網線;
該操作需要在服務器的本地終端上操作
[root@localhost ~]# brctl addif br0 em1
4.4 查看創建的網橋
[root@localhost ~]# brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.848f69dc43f7 no em1
vnet0
4.5 配置完成之後,重啟網絡服務,使得新加網卡生效:
[root@localhost network-scripts]# service network restart
4.6 (可選步驟)如果網橋創建有誤,可以刪除後重新創建
[root@localhost network-scripts]# ifconfig br0 down
[root@localhost network-scripts]# brctl delbr br0
4.7 查看服務器的網絡配置
本臺服務器的配置如下:
4.8 確定配置的IP已經生效:
在本地的Windows系統的命令行下,ping配置的IP,查看是否能夠聯通:
5 上載需要安裝的操作系統ISO鏡像文件
5.1 創建一個文件夾存放ISO鏡像文件
[root@localhost network-scripts]# mkdir /images/iso
5.2 創建一個目錄放置虛擬機文件
[root@localhost network-scripts]# mkdir /home/vms
5.3 使用FTP工具上傳操作系統的ISO鏡像到服務器的/images/iso,這裏以Cent OS 6.9為例創建並配置一臺虛擬機
6 創建raw磁盤格式的虛擬機
6.1 創建qcow2格式磁盤
如下命令創建了一個200GB的硬盤供虛擬機使用,虛擬機將安裝在這200GB的空間上;
[root@localhostnetwork-scripts]#qemu-img create -f qcow2 /home/vms/testvm1.img 300G
6.2 安裝虛擬機操作系統
[root@localhost network-scripts]# virt-install --name=testvm1 --ram 8192 --vcpus=8 --disk path=/home/vms/testvm1.img,format=qcow2,size=300,bus=virtio --accelerate --cdrom /images/iso/CentOS-6.9-x86_64-bin-DVD1.iso -d --vnc --vncport=5912 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio --noautoconsole
其中
--name參數指定需要創建的虛擬機的名稱;
--ram參數指定需要創建的虛擬機的內存大小,單位為MB;
--vcpus 參數指定需要創建的虛擬機的CPU核心的數量,該取值不能大於物理服務器擁有的物理CPU的核心總數;
--disk path指定虛擬機放置的位置;
size參數指定創建的虛擬機的磁盤的大小,單位為GB;
--network參數指定所要使用的網橋;
--cdrom參數指定需要使用的操作系統的iso鏡像文件;
--vnc –vncport指定VNC服務監聽的端口,後面我們使用VNC連接服務器會用到;
--vnclisten 指定VNC服務監聽的地址,如果不加此參數,那麽VNC服務將監聽在本地的127.0.0.1上,只能在本地連接使用,所有,如果要通過遠程訪問,可以指定該參數為服務器上的一個遠程可以訪問的IP,或者為0.0.0.0,可以通過服務器的任意一個IP訪問;
7 使用VNC連接並完成操作系統的安裝
7.1 下載並安裝VNC客戶端軟件,用來連接虛擬機,因為虛擬機剛裝好,是沒有IP地址的,無法通過網絡直接訪問;
軟件官方下載地址:https://www.tightvnc.com/download.php
7.2 查看VNC監聽端口
查看VNC服務是否在運行中:
[root@localhost iso]# ps -ef | grep vnc
root 4475 3977 0 09:55 pts/0 00:00:00 grep vnc
qemu 32289 1 8 Apr08 ? 01:18:08 /usr/libexec/qemu-kvm -name testvm1 -S -M rhel6.6.0 -enable-kvm -m 2048 -realtime mlock=off -smp 2,sockets=2,cores=1,threads=1 -uuid 5ad8d989-6089-fcd3-aefd-6880e5f6069f -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/testvm1.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x4.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x4 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x4.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x4.0x2 -drive file=/home/vms/testvm1.img,if=none,id=drive-ide0-0-0,format=raw,cache=none -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=23,id=hostnet0,vhost=on,vhostfd=24 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:9b:e7:19,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 0.0.0.0:12 -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 -msg timestamp=on
[root@localhost iso]#
可以看到,VNC服務已經啟動,並且進程號為32289;
通過進程號查看VNC服務監聽的端口:
[root@localhost iso]# netstat -tlunp | grep 32289
tcp 0 0 0.0.0.0:5912 0.0.0.0:* LISTEN 32289/qemu-kvm
[root@localhost iso]#
如果虛擬機沒有啟動,那麽需要先啟動虛擬機,才可以使用VNC連接,使用下面的命令檢查虛擬機是否已經啟動,如果狀態顯示為runnning則表示虛擬機已經在啟動狀態;
[root@localhost ~]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
7 testvm1 running
如果虛擬機沒有啟動,那麽需要使用下面的命令啟動:
[root@localhost ~]# virsh start testvm1
7.3 創建VNC連接
推薦使用免費的TightVNC.
7.4 按照步驟完成CentOS 系統的安裝
7.5 安裝完成後需要重啟,目前發現虛擬機重啟後會自動關閉,需要人工啟動:
啟動後VNC服務才會運行;
[root@localhost iso]# virsh start testvm1
查看虛擬機運行狀態:
[root@localhost iso]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
3 testvm1 running
[root@localhost iso]#
可以看到虛擬機在運行中;
可以通過下面的命令設置虛擬機自動啟動:
[root@localhost ~]# virsh autostart testvm1
域 testvm1標記為自動開始
8 配置虛擬機操作系統
8.1 配置IP、掩碼、網關信息
可以在VNC中通過窗口圖形界面完成這些配置;
配置完成之後,就可以使用SSH遠程登錄了,不再需要VNC連接了。
查看虛擬機的基本配置信息:
[root@testvm1 opt]# cat /proc/cpuinfo | grep processor | wc -l
8
[root@testvm1 opt]#
[root@testvm1 opt]# cat /proc/meminfo | grep MemTotal
MemTotal: 8059668 kB
[root@testvm1 opt]#
可以看到,虛擬機的CPU邏輯核有8個,內存為8GB;
查看磁盤信息:可以看到服務器配置了一塊硬盤,214.7GB
[root@testvm1 dev]# fdisk -l
查看磁盤核分區信息:
[root@testvm1 dev]# df –h
輸出如下:
9 在虛擬機中安裝MySQL5.7
9.1 安裝MySQL 5.7
在命令行中執行下面的命令下載配置MySQL yum源的文件:
[root@testvm1 dev]# wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
然後進行安裝:
[root@testvm2 opt]# rpm -Uvh mysql57-community-release-el6-9.noarch.rpm
安裝MySQL5.7 server:
[root@testvm2 opt]# yum install mysql-community-server
等待安裝完畢。
9.2 修改MySQL 默認密碼
MySQL初始密碼會在第一次啟動時記錄在MySQL的日誌文件中,在日誌文件中找到初始密碼;
先啟動數據庫:
[root@testvm2 opt]# service mysqld start
初始化 MySQL 數據庫: [確定]
正在啟動 mysqld: [確定]
[root@testvm2 opt]#
然後在日誌文件中查找初始密碼:
[root@testvm2 log]# grep "password" /var/log/mysqld.log
2018-04-10T09:44:44.054175Z 1 [Note] A temporary password is generated for root@localhost: pj_0ktse*?2A
2018-04-10T09:44:50.316855Z 2 [Note] Access denied for user ‘UNKNOWN_MYSQL_USER‘@‘localhost‘ (using password: NO)
[root@testvm2 log]#
例如,以上輸出中,紅色斜體字即為MySQL臨時密碼,可以通過該密碼從localhost登錄MySQL數據庫;
[root@testvm2 log]#
[root@testvm2 log]# mysql -h localhost -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.21
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
mysql>
通過下面的命令修改root用戶的密碼為“Test_1234”:
mysql> ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘Allsense@123!‘;
Query OK, 0 rows affected (0.00 sec)
9.3 允許遠程登錄MySQL
mysql> use mysql;
mysql> UPDATE user SET Host=’%’ WHERE user=’root’;
mysql> FLUSH PRIVILEGES;
9.4 重啟MySQL服務使配置生效
[root@testvm2 log]# service mysqld restart
9.5 關閉防火墻
[root@testvm2 log]# service iptables stop
iptables:將鏈設置為政策 ACCEPT:filter [確定]
iptables:清除防火墻規則: [確定]
iptables:正在卸載模塊: [確定]
[root@testvm2 log]#
9.6 禁止防火墻開機啟動
[root@testvm2 log]# chkconfig iptables off
9.7 安裝MySQL Workbench登錄數據庫,檢查是否正常
10 安裝Nginx 1.12
10.1 安裝Nginx所需基礎依賴
[root@testvm2 log]# yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
10.2 下載解壓縮Nginx源碼包
[root@testvm2 log]# wget http://nginx.org/download/nginx-1.12.2.tar.gz
[root@testvm2 log]# tar zxvf nginx-1.12.2.tar.gz
10.3 編譯安裝Nginx
[root@testvm2 nginx-1.12.2]# cd nginx-1.12.2
[root@testvm2 nginx-1.12.2]# ./configure
[root@testvm2 nginx-1.12.2]# make install
10.4 啟動Nginx
[root@testvm2 nginx-1.12.2]# cd /usr/local/nginx/sbin
[root@testvm2 nginx-1.12.2]# cd /usr/local/nginx/sbin
[root@testvm2 nginx-1.12.2]# ./nginx
在瀏覽器中輸入服務器IP:80訪問,如果出現下面的提示,說明Nginx安裝成功;
11 安裝rabitMQ
11.1 配置rabbitmq.repo源
先需要安裝rabbitmq-erlang基礎組件,需要配置rabbitmq的repo庫
[root@testvm2 opt]# vim /etc/yum.repos.d/rabbitmq.repo
在這個文件中寫入如下內容:
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/6
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
11.2 安裝erlang
[root@testvm2 ~]# yum -y install erlang
11.3 安裝epel擴展源用來安裝socat組件
[root@testvm2 ~]# yum -y install epel-release
11.4 安裝rabbitmq-server
[root@testvm2 ~]# cd /opt/
[root@testvm2 ~]#
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.4/rabbitmq-server-3.7.4-1.el6.noarch.rpm
[root@testvm2 ~]# yum install rabbitmq-server-3.7.4-1.el6.noarch.rpm
11.5 啟動rabbitmq-server
[root@testvm2 ~]# service rabbitmq-server start
出現如下信息表示啟動成功:
Starting rabbitmq-server: SUCCESS
rabbitmq-server.
12 安裝redis
12.1 安裝基礎依賴
[root@testvm2 opt]# yum install gcc gcc-c++ make zlib-devel readline readline-devel tkutil tk tkutil-devel tk-devel openssl openssl-devel wget vim ntp -y
12.2 下載redis源碼包並解壓安裝:
[root@testvm2 opt]# cd /opt
[root@testvm2 opt]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz
[root@testvm2 opt]# tar zxvf redis-4.0.9.tar.gz
[root@testvm1 opt]# cd redis-4.0.9
[root@testvm2 redis-4.0.9]# make && make install
進行測試檢查是否OK:
[root@testvm2 redis-4.0.9]# make test
出現下面的提示證明已經OK!
\o/ All tests passed without errors!
13 公共配置事項
13.1 關閉Linux防火墻
[root@testvm2 redis-4.0.9]# service iptables stop
[root@testvm2 redis-4.0.9]# service iptables status
iptables:未運行防火墻。
[root@testvm2 redis-4.0.9]# iptables -F
[root@testvm2 redis-4.0.9]# chkconfig iptables off
[root@testvm2 redis-4.0.9]#
13.2 克隆KVM虛擬機
註意:在宿主機器上操作
13.2.1 在宿主機命令行輸入如下命令克隆一臺虛擬機
[root@localhost qemu]# virt-clone -o testvm1 -n testvm2 -f /home/vms/testvm5.img
命令說明:
-o 參數指定已經有的虛擬機,需要從此源虛擬機克隆一臺新虛擬機;
-n 參數指定需要克隆出來的目標虛擬機的名稱;
-f 參數指定克隆出來虛擬機存放的位置以及鏡像文件;
13.2.2 克隆完成後修改新虛擬機的配置
需要修改VNC的監聽端口,否則因為VNC監聽端口沖突,將無法同時啟動,配置文件所在路徑:/etc/libvirt/qemu/testvm2.xml
修改VNC的監聽端口與已有虛擬機的VNC監聽端口不一樣;
13.2.3 使配置文件生效
[root@localhost qemu]# virsh define /etc/libvirt/qemu/testvm2.xml
13.2.4 啟動克隆出來的虛擬機進行配置
[root@localhost qemu]# virsh start testvm2
沒有出現錯誤信息就表示啟動成功;
13.2.5 使用修改後的VNC端口連接克隆出來的虛擬機
13.2.6 修改克隆虛擬機的主機名
[root@testvm2 ~]# vim /etc/sysconfig/network
將HOSTNAME修改為需要的主機名;
使主機名稱立即生效:
[root@testvm2 ~]# hostname testvm2
修改/etc/hosts文件,在127.0.0.1 一行後面添加上主機名:
13.2.7 給克隆出來的虛擬機配置IP
參考本文檔8.1章節進行配置;
註意:克隆出來的虛擬機,系統為了防止MAC地址沖突,自動刪除源虛擬機的eth0網卡,並且新加了一個名稱為Auto eth1的網卡;配置IP需要配置在此網卡上;
13.3 配置MySQL字符集
MySQL需要設置字符集為UTF-8,修改MySQL配置文件,確保有下面的內容:
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8
collation-server = utf8_unicode_ci
init_connect=’SET NAMES utf8’
13.4 配置Nginx反向代理(待補充)
13.5 管理KVM虛擬機的快照
- 給虛擬機創建快照
- 恢復到創建的快照
- 刪除快照文件
13.6 Cent OS利用yum安裝jdk
- 檢查現有的jdk版本
[root@testvm2 ~]# yum list installed |grep java
以上輸出說明現在安裝的版本為1.6和1.7的,我們需要的是1.8版本的,那麽需要卸載掉舊版本的jdk,重新安裝1.8.0版本的jdk;
java-1.6.0-openjdk.x86_64
java-1.7.0-openjdk.x86_64
tzdata-java.noarch 2016j-1.el6 @anaconda-CentOS-201703281317.x86_64/6.9
[root@testvm2 ~]# - 卸載舊版本的jdk
[root@testvm2 ~]# yum -y remove java-1.6.0-openjdk*
[root@testvm2 ~]# yum -y remove java-1.6.0-openjdk*
[root@testvm2 ~]# yum -y remove tzdata-java.noarch - 安裝新版本的jdk
查詢當前yum源下面可以安裝的jdk版本:
[root@testvm2 ~]# yum -y list java*
安裝1.8.0版本的jdk:
[root@testvm2 ~]# yum -y install java-1.8.0-openjdk*
查看安裝的java版本
[root@testvm2 ~]# java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
[root@testvm2 ~]#
KVM虛擬化、MySQL、Nginx、RabbitMQ、Redis組件安裝指導