云計算集群技術與應用- 教案-教學設計 第08章 大型網站集群架構項目一_第1頁
云計算集群技術與應用- 教案-教學設計 第08章 大型網站集群架構項目一_第2頁
云計算集群技術與應用- 教案-教學設計 第08章 大型網站集群架構項目一_第3頁
云計算集群技術與應用- 教案-教學設計 第08章 大型網站集群架構項目一_第4頁
云計算集群技術與應用- 教案-教學設計 第08章 大型網站集群架構項目一_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

云計算集群技術與應用教學設計課程名稱:云計算集群技術與應用__授課年級:_______________________授課學期:_______________________教師姓名:_______________________年月日課程名稱第8章大型網站集群架構項目一計劃學時8學時內容分析本章主要介紹大型網站集群架構項目一的相關知識,包含項目準備、部署LeadShop網站、部署資源共享存儲、部署Nginx七層負載、部署LVS四層負載、部署數(shù)據庫存儲。教學目標與教學要求【知識目標】熟悉網站優(yōu)化方式。熟悉分布式集群搭建?!炯寄苣繕恕空莆沾罱ㄍ暾W站架構的方式。【思政育人目標】培養(yǎng)學生大局意識,理解全局觀的重要性,為成為一個合格的運維工程師不斷學習。使學生了解我國優(yōu)秀企業(yè)取得的卓越成果,認識到科技創(chuàng)新能力已經越來越成為綜合國力競爭的決定性因素。培養(yǎng)學生學生樹立大國擔當與科技使命!激發(fā)學生對互聯(lián)網知識的興趣,也讓學生意識到科技是決定一個大國崛起的基礎,激勵學生努力學習,勇于創(chuàng)新。教學重點部署Nginx七層負載、部署LVS四層負載、部署數(shù)據庫存儲集群。教學難點部署Nginx七層負載、部署LVS四層負載、部署數(shù)據庫存儲集群。教學方式課堂講解配合ppt演示4學時,上機演練4學時教學過程第一學時(項目準備、部署LeadShop網站)一、提出需求,導入學習任務(1)思考LVS四層負載集群的學習應該從何入手。通過前面的學習,讀者已經可以掌握高并發(fā)大型網站的常用配置與操作。為了進一步提升讀者在生產環(huán)境中對該部分內容的運用技巧,本章將針對完整的網站架構通過網站優(yōu)化、分布式集群搭建等方向進行講解。(2)明確學習方向。熟悉網站集群架構設計。掌握部署LeadShop網站。二、知識講解(一)項目準備1.項目分析(1)本書所涉及的所有集群技術可構建企業(yè)中常見的網站集群架構,具體如圖。(2)集群架構的選擇和構建要根據實際的應用場景和業(yè)務需求進行規(guī)劃,主要考慮以下參考指標。確定網站業(yè)務類型頁面訪問量考慮數(shù)據量大小確定集群的節(jié)點類型2.項目說明按照架構圖,架設一個功能齊全的網站集群,用戶可以通過網絡對網站的資源進行訪問??蛻舳说挠脩敉ㄟ^Internet訪問LeadShop(企業(yè)上線的業(yè)務或項目)網站地址:通過客戶端在hosts文件中解析,解析到LVS前端負載調度器上,四層負載均衡根據IP和端口將請求進行合理分發(fā)。當七層負載均衡器Nginx收到來自LVS的任務時,根據用戶請求類型的不同,再次將用戶請求向web服務器分發(fā)。在使用Apache的web服務器上分別部署LeadShop(企業(yè)上線的業(yè)務或項目)虛擬主機網站內容。當用戶更新商品信息,上架商品等內容時,數(shù)據通過Web服務寫入MySQL數(shù)據庫。當用戶上傳商品圖片、視頻、附件頭像等文件時,這些數(shù)據會通過Web服務傳到共享存儲NFS服務器上,而不是存儲到Web服務器上。所有服務器時間保持一致,對重要數(shù)據進行定時備份,數(shù)據庫做主從復制和讀寫分離的備份策略。為LVS和Nginx配置高可用,實現(xiàn)宕機后由備機自動接管服務。3.項目設計首先按照網站技術發(fā)展的順序,將網站的架構建設完整。完整的網站架構圖如圖。該架構中用到的服務器及技術解釋如下所示。四層負載均衡調度器(LVS+Keepalived)七層負載均衡調度器(Nginx)Web應用集群(Apache+PHP)數(shù)據庫服務器(Mysql)共享存儲服務器(NFS)本章項目中同時使用LVS和Nginx。LVS工作在網絡的第四層,僅完成請求分發(fā),穩(wěn)定性和轉發(fā)效率更高。Nginx作為中間環(huán)節(jié),不但避免了流量集中的瓶頸問題,減少后端的服務壓力,而且還可以實現(xiàn)一些業(yè)務切換、分流、前置緩存的功能。4.項目實施任何一個大型網站集群都是由中小型網站集群發(fā)展而來。為了讓讀者更直觀地體會到這個過程,該綜合項目將首先以LAMP架構為基礎搭建小型網站集群,并上線LeadShop系統(tǒng)。在基礎工作完成之后,再對該LeadShop網站進行架構的升級,配置四七層負載均衡器改善網站性能并為數(shù)據庫開啟主從復制優(yōu)化。要完成圖中的網站架構部署,至少準備8臺可用的服務器。本次案例的實驗環(huán)境具體如表。服務器角色應用程序IP地址Web服務器2Apache+PHP31數(shù)據庫服務器MySQL32數(shù)據庫服務器MySQL38共享存儲NFS29七層負載均衡器Nginx135七層負載均衡器Nginx233四層負載均衡器(主)LVS36四層負載均衡器(備)LVS37備注:本實驗中所有服務器都采用CentOS7.6操作系統(tǒng),需要提前關閉防火墻及Selinux,同步系統(tǒng)時間。(二)部署LeadShop網站(詳細步驟見第8章PPT)首先在準備好的Web服務器上上線網站系統(tǒng),按照服務器處理的請求類型不同,將動靜態(tài)服務器分開部署。用以處理靜態(tài)請求的Web服務器配置Apache即可,用以處理動態(tài)請求的Web服務器配置Apache和PHP,數(shù)據庫采用MySQL在獨立服務器上進行實現(xiàn),兩臺Web的共用數(shù)據將通過NFS進行共享。1.部署Web集群在應用服務器web1和web2上分別安裝Apache、PHP-MySQL。#yum-yinstallhttpdhttpd-develphp-mysql查看apxs所在路徑,此工具用于編譯PHP時生成/etc/httpd/modules/libphp7.so。#rpm-qlhttpd-devel|grepapxs/usr/bin/apxs安裝編譯工具以及PHP的相關依賴包。#yuminstall-ygccgcc-c++makezlibzlib-develpcrepcre-devellibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-devellibxml2libxml2-develglibcglibc-develglib2glib2-develbzip2bzip2-develncursesncurses-develcurlcurl-devele2fsprogse2fsprogs-develkrb5krb5-developensslopenssl-developenldapopenldap-develnss_ldapopenldap-clientsopenldap-servers下載PHP軟件包到/usr/local目錄并解壓。#cd/usr/local/#wget/distributions/php-7.2.20.tar.gz#tar-zxfphp-7.2.20.tar.gz進入解壓后的PHP目錄,對即將安裝的PHP軟件進行配置,以及檢查當前環(huán)境是否滿足源代碼安裝的依賴關系。#cdphp-7.2.20#./configure--prefix=/usr/local/php--with-config-file-path=/usr/local/php--enable-mbstring--with-openssl--enable-ftp--with-gd--with-jpeg-dir=/usr--with-png-dir=/usr--with-mysql=mysqlnd--with-mysqli=mysqlnd--with-pdo-mysql=mysqlnd--with-pear--enable-sockets--with-freetype-dir=/usr--with-zlib--with-libxml-dir=/usr--with-xmlrpc--enable-zip--enable-fpm--enable-xml--enable-sockets--with-gd--with-zlib--with-iconv--with-apxs2=/usr/bin/apxs--enable-zip--with-freetype-dir=/usr/lib/--enable-soap--enable-pcntl--enable-cli--with-curl編譯并安裝PHP。#make&&makeinstall安裝完成后,拷貝一份php.ini至php安裝目錄。#cpphp.ini-production/usr/local/php/php.ini在環(huán)境配置文件/etc/profile中添加PHP環(huán)境變量。#exportPATH=$PATH:/usr/local/php/bin#source/etc/profile查看當前PHP的版本,進一步驗證PHP是否安裝成功。#php-vPHP7.2.20(cli)(built:Apr20202217:21:31)(NTS)Copyright(c)1997-2018ThePHPGroupZendEnginev3.2.0,Copyright(c)1998-2018ZendTechnologies至此PHP安裝完成,接下來配置Apache服務器對PHP文件的解析。編輯Apache的配置文件/etc/httpd/conf/httpd.conf:在LoadModule(啟動時加載的模塊)處查找如下代碼,若沒有如下代碼則添加。LoadModulephp7_module/usr/lib64/httpd/modules/libphp7.so在文件的最后添加如下代碼,以支持Apache對PHP的解析。<IfModulemod_php7.c>AddTypeapplication/x-httpd-php.php</IfModule>在<IfModuledir_module>配置節(jié)點添加默認的首頁頁面文件,即在index.html后添加index.php。<IfModuledir_module>DirectoryIndexindex.htmlindex.php</IfModule>配置完成后啟動網站服務,并設置其開機自啟。部署完成后,在瀏覽器中訪問該Web服務器的IP地址,可以看到Apache的默認測試頁。在兩臺web服務器上各自編寫一個PHP測試頁,測試網站是否能解析PHP語言。若之前安裝的PHP可以正常工作,在瀏覽器中訪問該動態(tài)Web服務器IP時,可以看到PHP信息頁。2.部署數(shù)據庫服務器在預設的主數(shù)據庫上部署mysql服務,用于處理數(shù)據的增刪改查等功能。卸載系統(tǒng)自動安裝的MariaDB。使用wget命令下載MySQLRPM包。使用RPM工具將該鏡像包解析并更新至本機的鏡像源中下載Yum管理工具包。使用yum-config-manager命令關閉MySQL8.0版本,并開啟MySQL5.7版本。使用Yum命令下載并安裝MySQL。啟動MySQL,并設置為開機自啟。查看root用戶被授予的臨時密碼。接下來登錄數(shù)據庫修改密碼,創(chuàng)建數(shù)據庫用戶,并授予相關權限。[root@mysql1~]#mysql-uroot-p"!h(Ctnevh0R#"……#修改MySQL登錄密碼mysql>ALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'qf@123.coM';#授予web服務器權限mysql>grantallon*.*toroot@'31'identifiedby'qf@123;.coM';mysql>grantallon*.*toroot@'30'identifiedby'qf@123.coM';#創(chuàng)建數(shù)據庫用戶mysql>createusertom@'%'identifiedby'qf@123.coM';#允許遠程登錄mysql>usemysql;mysql>updateusersethost='%'whereuser='tom';mysql>flushprivileges;新建的數(shù)據庫用戶為tom,登錄密碼為“qf@123.coM”。初始化數(shù)據庫之后,在網站根目錄下編寫test.php文件,測試網站是否能與數(shù)據庫連通。若其可以連接成功則返回Successfully,否則返回Fail。在瀏覽器中訪問test.php。當前網站與數(shù)據庫交互成功,分離式LAMP環(huán)境搭建完成。3.上線LeadShop商城系統(tǒng)在動態(tài)Web服務器中上線LeadShop系統(tǒng),數(shù)據將存至配置完成的數(shù)據庫服務器中,具體分以下4步來完成。(1)導入LeadShop網站源碼在web1服務器利用wget工具下載LeadShop網站源碼,web2不做操作。[root@web1~]#wget/leadshop/leadshop/repository/archive/master.zip下載完成后,對網站壓縮包進行解壓,再將軟件包移至指定或自創(chuàng)的網站目錄下,授予相應權限。(2)Apache配置虛擬主機編輯配置文件,設置論壇網站的接收端口,指定網站目錄位置。//web1、web2#cat/etc/httpd/conf.d/leadshop.conf<VirtualHost*:80>ServerNameDocumentRoot/webdir/leadshop-master/web</VirtualHost><Directory"/webdir/leadshop-master/web">Requireallgranted</Directory>指定LeadShop網站通過80端口接收請求,網站目錄在/webdir/leadshop-master/web,該目錄下的所有訪問操作都是被允許的。(3)準備數(shù)據庫在初始化完成的數(shù)據庫中創(chuàng)建leadshop數(shù)據庫,用以存放網站數(shù)據。[root@mysql1~]#mysql-uroot-p'qf@123.coM'……mysql>createdatabaseleadshop;網站數(shù)據庫部署完成后,在數(shù)據庫中授予操作leadshop庫的權限。#授予庫權限mysql>grantallon*.*to'tom'@'%';#刷新mysql>flushprivileges;(4)安裝LeadShop系統(tǒng)在瀏覽器中輸入動態(tài)Web服務器的IP地址,開始安裝LeadShop。首先訪問到的是安裝協(xié)議頁面。單擊“同意并繼續(xù)”按鈕,開始檢查安裝環(huán)境,進入安裝向導頁面。安裝目錄檢測一切正常,單擊“下一步”按鈕進入參數(shù)配置頁面,開始填寫MySQL數(shù)據庫和網站管理員信息。填寫完成后,單擊“繼續(xù)”按鈕,即可開始安裝。數(shù)據庫安裝成功之后,顯示安裝成功的頁面。至此,LeadShop安裝完成,單擊“進入管理后臺”按鈕輸入網站管理員信息,即可登錄網。單擊“登錄”按鈕,進入LeadShop商城后臺。將web1的/webdir/leadshop-master目錄拷貝給web2,使得web集群將數(shù)據存儲到同一個數(shù)據庫中。[root@web1~]#scp-r/webdir/leadshop-masterroot@31:/webdir/這時輸入web2的IP地址,會直接訪問到登錄首頁。至此,web集群已經成功上線網站業(yè)務。三、知識鞏固(1)回顧上課前的學習目標,對本節(jié)課知識點進行總結。(2)使用第8章課后作業(yè)。第二學時(資源共享存儲)一、回顧上節(jié)課內容(1)對上節(jié)課布置的作業(yè)以及學生提出的問題進行答疑解惑。(2)回顧上節(jié)課內容,引出本節(jié)課主題。(3)明確學習方向。掌握部署NFS共享存儲。二、知識講解(一)在NFS服務器中開啟共享服務在NFS服務器中下載安裝NFS,啟動該項服務,設置其開機自啟。[root@nfs~]#yum-yinstallnfs-utilsrpcbind[root@nfs~]#systemctlstartnfs-server[root@nfs~]#systemctlenablenfs-server[root@nfs~]#systemctlstartrpcbind[root@nfs~]#systemctlenablerpcbind設置完成后,新建商城網站存放目錄/leadshop/web,用于接收Web服務器上安裝完成的論壇網站數(shù)據。編輯/etc/exports文件,設置服務器共享規(guī)則。在LeadShop論壇系統(tǒng)中,leadshop-master/web/img文件夾及l(fā)eadshop-master/web/static文件存儲靜態(tài)資源,設置這兩個文件夾為共享文件夾即可,共享對象為Web服務器。[root@qfedu~]#vim/etc/exports/webdir/leadshop-master/web/img//24(rw,all_squash,anonuid=0,insecure)/webdir/leadshop-master/web/static//24(rw,all_squash,anonuid=0,insecure)本項目中的web1和web2在同一網段,客戶端地址寫其所在的網段即可。執(zhí)行exportfs-rv命令即可使修改的/etc/exports生效。(二)在Web服務器中使用共享服務將Web服務器中的靜態(tài)數(shù)據發(fā)送至NFS服務器一份,使得NFS服務器存有相關數(shù)據,方便后續(xù)操作。[root@web1~]#scp-r/webdir/leadshop-master/web/*29:/leadshop/web/在Web服務器中下載安裝NFS服務,并啟動,設置其開機自啟。//web1、web2#yum-yinstallnfs-utilsrpcbind#systemctlstartnfs#systemctlstartrpcbind#systemctlenablenfs#systemctlenablerpcbind設置完成后,查看NFS服務器共享出來的目錄。[root@nfs~]#showmount-e29Exportlistfor29:/webdir/leadshop-master/web/static/24/webdir/leadshop-master/web/img/24當前可用的共享文件目錄/webdir/leadshop-master/web/static、/webdir/leadshop-master/web/img,接下來繼續(xù)在Web服務器上掛載共享目錄。//web1、web2#mount29:/webdir/leadshop-master/web/img//webdir/leadshop-master/web/img/#mount29:/webdir/leadshop-master/web/static//webdir/leadshop-master/web/static/注意:直接用mount方式進行掛載,重啟后就會失效。一般企業(yè)工作中推薦使用配置文件的方式,使其開機自動掛載,編輯/etc/fstab文件,編輯掛載命令后保存即可。//web1、web2#vim/etc/fstab29:/webdir/leadshop-master/web/img//webdir/leadshop-master/web/img/nfsdefaults0029:/webdir/leadshop-master/web/static//webdir/leadshop-master/web/static/nfsdefaults00輸入mount-a使/etc/fstab中的內容重新加載,自動掛載共享目錄。#mount-a配置完成后,查看動態(tài)Web服務器的掛載信息。(三)測試共享數(shù)據資源共享部署完成后,測試靜態(tài)文件能不能在各Web服務器之間達成共享。在NFS服務器的網站靜態(tài)資源文件夾中編寫測試文件test.html。[root@nfs~]#vim/webdir/leadshop-master/web/static/test.html數(shù)據共享測試頁面!編寫完成后,NFS服務器現(xiàn)已存有相關數(shù)據,在Web服務器端對該資源進行訪問。瀏覽器訪問web1的IP,訪問界面如圖。瀏覽器訪問web2的IP,訪問界面如圖??梢钥闯觯M管文件只在NFS服務器中進行寫入,但因為不同的Web服務器之間對靜態(tài)資源文件夾進行共享,共享系統(tǒng)中的動態(tài)Web服務器也可以直接獲取共享文件夾內的資源,返回給用戶,資源共享配置成功。同理,若用戶與Web服務器進行交互,產生的動態(tài)數(shù)據將寫入數(shù)據庫,靜態(tài)數(shù)據將寫入共享的靜態(tài)文件夾,兩臺Web服務器都可以訪問。三、知識鞏固(1)回顧上課前的學習目標,對本節(jié)課知識點進行總結。(2)使用第8章課后作業(yè)。第三學時(部署Nginx七層負載、部署LVS四層負載)一、回顧上節(jié)課內容(1)對上節(jié)課布置的作業(yè)以及學生提出的問題進行答疑解惑。(2)回顧上節(jié)課內容,引出本節(jié)課主題。(3)明確學習方向。掌握部署Nginx七層負載。掌握部署LVS四層負載。二、知識講解(一)部署Nginx七層負載1.現(xiàn)階段,商城網站已部署完成,可以正常對外提供服務。為了能更好地處理用戶的請求,現(xiàn)對用戶請求實行“人性化”的管理,分發(fā)流量加快處理效率,此處選擇Nginx部署七層代理,控制流量負載均衡及反向代理功能,并實現(xiàn)“人性化”管理。為準備的2臺Nginx七層負載均衡器安裝Nginx軟件。//nginx1、nginx2#yum-yinstallepel-release#yum-yinstallnginx安裝Nginx后,編輯其配置文件/etc/nginx/nginx.conf,添加相關的服務器組,具體添加內容如下所示。#vim/etc/nginx/nginx.conf#注意更改的位置!!!http{······此處省略部分代碼······server{······此處省略部分代碼······#引用服務器組location/{proxy_passhttp://html;proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerREMOTE-HOST$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}······此處省略部分代碼······}#配置服務器組upstreamhtml{ server30:80weight=5; server31:80weight=5;}}配置完成后啟動Nginx,并設置為開機自啟。使用Windows瀏覽器訪問Nginx負載均衡器的IP可訪問web集群。強制刷新瀏覽器,再次訪問網站,可通過訪問web1和web2的access.log查看客戶端請求的信息。在web1和web2使用tail命令加-f參數(shù)可動態(tài)查看正在修改的文件。[root@web1nginx]#tail-f/var/log/nginx/access.log也可以通過網頁測試工具Elinks,進行訪問測試。2.通過本節(jié)項目步驟可以看到,一臺負載均衡器就可以滿足實驗需求,那為什么部署兩臺呢?一般情況下,為防止服務器出現(xiàn)單點故障,為其做備份是最好的選擇。配置與服務器A完全一樣的服務器B,當服務器A出現(xiàn)故障時,立馬使用服務器B替換服務器A進行工作,保證業(yè)務的穩(wěn)定性。在客戶端使用Elinks工具繼續(xù)訪問nginx2,。[root@qfedu~]#elinks--dump35:/nginx_test.htmlweb1[root@qfedu~]#elinks--dump35:/nginx_test.htmlweb2[root@qfedu~]#elinks--dump35:/nginx_test.htmlweb1至此,兩臺七層負載均衡器均已成功部署。此處可以考慮在本書中介紹過的高可用軟件Keepalived,也可以考慮使用Heartbeat實現(xiàn)高可用或市面其他可供選擇的高可用軟件,感興趣的讀者可以自行研究。(二)部署LVS四層負載為了解決七層負載均衡器成為性能瓶頸,充分發(fā)揮備份服務器的作用。現(xiàn)在為網站配置四層負載均衡服務器,一方便解決流量分發(fā)的問題,另一方面為8.4中兩臺Nginx實現(xiàn)高可用,一臺宕機時,另一臺可以馬上替補,使網站系統(tǒng)可以高效運轉。1.部署四層負載及其高可用按照項目說明,使用IP為36(lvs1)和IP為37(lvs2)的服務器實現(xiàn)四層負載均衡。此處默認36為主LVS,37為從LVS。首先在主LVS上部署四層負載均衡功能,具體如下所示。(1)在主LVS上按照配置Keepalived實現(xiàn)四層負載均衡功能需要安裝ipvsadm管理工具,實現(xiàn)兩臺四層負載均衡服務器的高可用需要軟件Keepalived,這里同時下載兩個軟件。(2)修改主LVS的配置文件設置虛擬網站對外提供服務的虛擬IP為50,將兩臺七層負載均衡器加入LVS的輪詢隊伍,設置輪詢算法為Round-Robin:[root@bogon~]#cat/etc/keepalived/keepalived.conf!ConfigurationFileforkeepalivedglobal_defs{ router_idlvs-01 } vrrp_instanceVI_1{ stateMASTER interfaceens33 virtual_router_id51 priority150 advert_int1 authentication{ auth_typePASS auth_pass1111 } virtual_ipaddress{ 50/24devens33 } } virtual_server5080{ delay_loop3 lb_algorr lb_kindDR protocolTCP real_server3380{ weight1 TCP_CHECK{ connect_timeout3 } } real_server3580{ weight1 TCP_CHECK{ connect_timeout3 } }}(3)在從LVS上按照配置Keepalived與主LVS相同,在從LVS上安裝ipvsadm管理工具及Keepalived。(4)修改從LVS的配置文件與主LVS相同,在從LVS中修改Keepalived配置文件,設置虛擬網站對外提供服務的虛擬IP為50優(yōu)先級略低于主LVS。將兩臺七層負載均衡器加入LVS的輪詢隊伍,設置輪詢算法為Round-Robin:[root@lvs2~]#cat/etc/keepalived/keepalived.conf!ConfigurationFileforkeepalivedglobal_defs{ router_idlvs-02 } vrrp_instanceVI_1{ stateBACKUP interfaceens33 virtual_router_id51 priority100 advert_int1 authentication{ auth_typePASS auth_pass1111 } virtual_ipaddress{ 50/24devens33 } } virtual_server5080{ delay_loop3 lb_algorr lb_kindDR protocolTCP real_server3380{ weight1 TCP_CHECK{ connect_timeout3 } } real_server3580{ weight1 TCP_CHECK{ connect_timeout3 } }}(5)主從服務器同時啟動Keepalived兩臺LVS的配置文件修改完成后,同時啟動Keepalived并設置其開機自啟。(6)重啟服務器2.配置七層負載均衡器兩臺七層負載均衡器配置的方式相同,故以下操作需要分別在兩臺七層負載均衡器上各完成一遍,具體過程如下所示。(1)確定服務可用四層負載均衡器根據負載策略將請求分派給不同的七層負載均衡器進行處理,若被分配到的七層負載均衡器并沒有七層負載均衡的功能,便失去了分派的意義。故輪詢隊伍中的七層負載均衡器應首先保證負載功能可用。該項目用到的兩臺七層負載均衡器已在8.4小節(jié)中做過相關測試,服務可用,故此處進行下一步即可。(2)配置虛擬地址為七層負載均衡服務器配置虛擬網絡地址,用于與LVS設備進行通信,將VIP配置在物理網卡的子接口上,本實驗的VIP設置為50。[root@nginx1~]#yum-yinstallnet-tools[root@nginx1~]#ifconfigens33:050broadcast55netmaskup查看網絡接口和網卡信息。[root@nginx1~]#ipainet50/24brd55scopeglobalsecondaryens33:0(3)配置路由在七層負載均衡服務器上,給ens33:0添加路由,確保如果請求的目標IP是$VIP,那么讓出去的數(shù)據包的源地址也顯示為$VIP。[root@nginx1~]#routeadd-host50devens33:0為了防止重啟失效,追加如下內容至開機自啟文件中。[root@nginx1~]#cat/etc/rc.local|tail-1/sbin/routeadd-host50devlo:0(4)配置ARP配置ARP,在/etc/sysctl.conf文件中編輯代碼,忽略ARP請求。即用戶直接對該服務器進行訪問,該服務器不會應答,但是當收到LVS分配的請求時,可以使用50的身份進行回復。配置內容:[root@nginx1~]#cat/etc/sysctl.confnet.ipv4.conf.all.arp_ignore=1net.ipv4.conf.all.arp_announce=2net.ipv4.conf.default.arp_ignore=1net.ipv4.conf.default.arp_announce=2net.ipv4.conf.lo.arp_ignore=1net.ipv4.conf.lo.arp_announce=2修改完成系統(tǒng)配置文件后,可以更新配置結果到內存。[root@nginx1~]#sysctl-p3.測試服務可用性當LVS與HAProxy相互“認識”,搞清身份之后,用戶便可以通過LVS提供的虛擬地址,享受商城服務。在瀏覽器中輸入上文配置的虛擬IP“50”,對網站進行訪問。通過該虛擬IP可以訪問到LeadShop系統(tǒng),實驗部署成功。接下來將對LVS的高可用性做一些測試。(1)觀察LVS路由條目虛擬IP默認在主LVS上,在主LVS中輸入代碼觀察LVS的路由條目。[root@lvs1~]#ipvsadm-LnIPVirtualServerversion1.2.1(size=4096)ProtLocalAddress:PortSchedulerFlags->RemoteAddress:PortForwardWeightActiveConnInActConnTCP50:80rr->33:80Route120->35:80Route120(2)觀察VIP的位置觀察VIP在哪臺服務器上,可以在部署LVS的服務器上查詢IP地址,若在IP地址中可以看到VIP,則說明VIP在當前服務器上。首先在主LVS中查詢IP地址??梢钥吹街鱈VS的地址36,繼續(xù)觀察可以發(fā)現(xiàn)VIP50也在當前服務器上,說明此時VIP在主LVS上。當主LVS由于意外發(fā)生宕機時,Keepalived會將VIP轉移至從LVS,后續(xù)服務將由從LVS進行。(3)測試LVS是否可以自動切換模擬主LVS宕機,測試論壇能否繼續(xù)訪問,若能繼續(xù)訪問,則說明兩臺LVS以Keepalived為媒介成功實現(xiàn)高可用,一臺出現(xiàn)故障時,另一臺可以直接替補工作。首先模擬主LVS宕機,關閉主LVS上的Keepalived。在瀏覽器中訪問VIP。盡管此時主LVS已宕機,但商城網站依舊可用。按照Keepalived工作機制,當主LVS宕機時,此時提供服務的服務器已變成從LVS,在從LVS中查看IP。VIP已轉移至從LVS。四層負載均衡服務部署完成,且成功實現(xiàn)了高可用。三、知識鞏固(1)回顧上課前的學習目標,對本節(jié)課知識點進行總結。(2)使用第8章課后作業(yè)。第四學時(數(shù)據庫集群)一、回顧上節(jié)課內容(1)對上節(jié)課布置的作業(yè)以及學生提出的問題進行答疑解惑。(2)回顧上節(jié)課內容,引出本節(jié)課主題。(3)明確學習方向。掌握部署數(shù)據庫集群。二、知識講解(一)準備數(shù)據由于商城系統(tǒng)是第一次上線,數(shù)據庫中的數(shù)據為空。登錄數(shù)據庫,查看leadshop庫的商品表。leadshop系統(tǒng)包含66個數(shù)據表。在配置數(shù)據庫主從復制的功能之前,要保證數(shù)據庫存在數(shù)據,接下來以le_goods商品表為例準備數(shù)據。首先在瀏覽器中訪問網站對外提供的服務IP,即之前配置的VIP:23,然后使用之前安裝時設置的管理員賬戶登錄,進入首頁。登錄成功后,點擊“發(fā)布商品”,進入商品編輯頁面。填寫商品名稱和商品副標題,然后單擊商品分類對應的“新建分類”鏈接,添加商品類別。填寫信息完成后,單擊“保存”按鈕。單擊商品分類對應的“刷新”按鈕,然后單擊“選擇分類”按鈕。勾選“書籍”類別,單擊“確認”按鈕,再次回到商品信息編輯頁面。上傳并選擇商品輪播圖。選擇商品輪播圖要使用的圖片,單擊“確認”按鈕。至此,商品的基本信息填寫完成。單擊“下一步”按鈕,填寫價格庫存信息。單擊“下一步”按鈕,填寫物流設置信息。單擊“下一步”按鈕,填寫營銷設置信息。單擊“下一步”按鈕,設置其他信息。單擊“下一步”按鈕,編輯商品詳情信息。單擊“保存商品”按鈕,完成了一條商品信息的錄入。目前只錄入了一條商品信息。查看商品表的數(shù)據,當前l(fā)e_goods表中只有一條記錄,并且商品名為“Nginx高性能Web服務器應用與實踐”,價格為“59.80”,正是之前在網頁上發(fā)布的商品。(二)配置主庫數(shù)據準備完成后,在主數(shù)據庫上做以下工作:開啟二進制日志創(chuàng)建復制用戶備份主庫現(xiàn)有數(shù)據新增測試數(shù)據下面將詳細講解操作步驟。開啟二進制日志在MySQL配置文件中的[mysqld]模塊添加以下代碼,開啟二進制日志。[root@mysql1~]#vim/etc/f[mysqld]log_binserver-id=1添加完成后,重啟MySQL使配置生效。創(chuàng)建復制用戶在主數(shù)據庫服務器的MySQL中創(chuàng)建用于復制的用戶,并授予從庫服務器需要的權限。[root@mysql1~]#mysql-uroot-p'qf@123.coM'……mysql>grantreplicationslave,replicationclienton*.*to'rep'@'192.168.99.%'identifiedby'qf@123.coM';mysql>flushprivileges;在主數(shù)據庫服務器的MySQL中創(chuàng)建了用于復制的用戶“rep”,并授予從庫服務器需要的權限。備份主庫現(xiàn)有數(shù)據授權完成后,將現(xiàn)有的數(shù)據打包成.sql文件,發(fā)送給從庫服務器。[root@mysql1~]#mysqldump-p'qf@123.coM'--all-databases--single-transaction--master-data=2--flush-logs>`date+%F`-mysql-all.sql[root@mysql1~]#ls2022-05-05-mysql-all.sqlanaconda-ks.cfg[root@mysql1~]#scp-r2022-05-05-mysql-all.sql38:/tmp/生成的.sql文件以當日日期命名,并被發(fā)送至從庫服務器的/tmp文件。查看生成的數(shù)據庫文件,查找二進制日志的分割點。[root@mysql1~]#cat2022-05-05-mysql-all.sql|grep'CHANGEMASTERTOMASTER_LOG_FILE='--CHANGEMASTERTOMASTER_LOG_FILE='mysql1-bin.000003',MASTER_LOG_POS=154;當前日志切割文件為“mysql1-bin.000003”,位置是“154”。新增測試數(shù)據當前準備的.sql文件中只有一條商品信息,按照9.3.1發(fā)帖的方式再次發(fā)布商品,后期配置從庫之后,觀察從庫是否能自動同步新數(shù)據。在主庫的數(shù)據庫中進行查詢,也可以看到商城系統(tǒng)的商品表le_goods中有兩條數(shù)據。這兩條記錄與網頁上編輯的信息完全一致,數(shù)據無差錯,新增數(shù)據寫入成功。要注意的是,發(fā)給從庫的數(shù)據卷中只有一條數(shù)據記錄,在從庫中回滾數(shù)據后,查詢帖子內容應只有一條記錄。從庫啟動主從復制后,若實驗成功,便會自動同步新的數(shù)據,到時可以看到兩條數(shù)據記錄。(三)配置從庫新增一臺服務器做從數(shù)據庫服務器,從庫的數(shù)據庫依然采用MySQL實現(xiàn),下載、安裝及初始化數(shù)據庫的過程不再贅述。從數(shù)據庫軟件配置完成后,需要完成以下工作。測試復制賬戶是否可用啟動從服務器序號恢復同步數(shù)據設置主服務器啟動從設備觀察啟動狀態(tài)下面將詳細講解操作步驟。測試復制賬戶是否可用使用復制賬戶“rep”及在主庫中設定的復制賬戶密碼“123456”,遠程登錄主數(shù)據庫服務器,登錄的命令及結果如下所示。[root@mysql2~]#mysql-h32-urep-p'qf@123.coM'……mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema|+--------------------+1rowinset(0.00sec)rep賬戶可以登錄并使用主服務器的數(shù)據庫,該賬戶可用。啟動從服務器序號使用vim命令在MySQL配置文件中的[mysqld]模塊添加以下代碼,使得從服務器加入數(shù)據庫集群中:[root@mysql2~]#vim/etc/fserver-id=2添加完成后,重啟MySQL使配置生效?;謴屯綌?shù)據登錄數(shù)據庫,使用source命令進行日志事務的回滾操作,將主庫準備的數(shù)據卷恢復到從庫中。[root@mysql2~]#mysql-uroot-p'qf@123.coM'……mysql>setsql_log_bin=0;mysql>source/tmp/2022-05-05-mysql-all.sql導入完成后查看從數(shù)據庫中的數(shù)據。mysql>useleadshop;mysql>select*fromle_goods\G***************************1.row***************************id:1name:Nginx高性能Web服務器應用與實踐……當前數(shù)據庫中只存有一條數(shù)據。這是因為當前僅恢復了之前主庫的打包數(shù)據,并未啟動主從復制功能,主庫的新增數(shù)據只有從庫開啟主從復制后才能自動同步。設置主服務器在開啟主從復制功能之前應指定從庫的主是誰,以及從庫該從哪里開始同步。根據之前查詢到的二進制日志切割點進行設置。mysql>changemasterto->master_host='32',->master_user='rep',->master_password='qf@123.coM',->master_log_file='mysql1-bin.000003',->MASTER_LOG_POS=154;設定該數(shù)據庫的主庫為“32”,進行復制使用的賬戶為“rep”,密碼為“qf@123.coM”,從主庫的“mysql1-bin.000003”日志文件的“154”位置開始主從同步。啟動從設備輸入以下命令開啟從服務器的同步功能。mysql>startslave;觀察啟動狀態(tài)(1)在從數(shù)據庫中查看當前從服務器的主從復制狀態(tài):mysql>showslavestatus\G***************************1.row***************************Slave_IO_State:WaitingformastertosendeventMaster_Host:32Master_User:repMaster_Port:3306Connect_Retry:60Master_Log_File:mysql1-bin.000003Read_Master_Log_Pos:6773Relay_Log_File:mysql2-relay-bin.000002Relay_Log_Pos:6940Relay_Master_Log_File:mysql1-bin.000003Slave_IO_Running:YesSlave_SQL_Running:Yes……從庫通過3306端口進行主從復制。此時Slave_IO_Running狀態(tài)為Yes,Slave_SQL_Running的狀態(tài)為Yes,表示主從復制搭建成功。(2)查看同步后的數(shù)據。mysql>select*fromle_goods\G***************************1.row***************************

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論