1. 程式人生 > >KVM虛擬化、MySQL、Nginx、RabbitMQ、Redis組件安裝指導

KVM虛擬化、MySQL、Nginx、RabbitMQ、Redis組件安裝指導

mysql字符集 eas www cat listen copy 測試 arc remove

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:將鏈設置為政策 ACCEPTfilter [確定]

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

  1. 檢查現有的jdk版本

    [root@testvm2 ~]# yum list installed |grep java
    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 ~]#

    以上輸出說明現在安裝的版本為1.6和1.7的,我們需要的是1.8版本的,那麽需要卸載掉舊版本的jdk,重新安裝1.8.0版本的jdk;
  2. 卸載舊版本的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
  3. 安裝新版本的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組件安裝指導