1、什麼是運維?什麼是遊戲運維?
1)運維是指大型組織已經建立好的網絡軟硬體的維護,就是要保證業務的上線與運作的正常,在他運轉的過程中,對他進行維護,他集合了網絡、系統、資料庫、開發、安全、監控于一身的技術,運維又包括很多種,有DBA運維、網站運維、虛拟化運維、監控運維、遊戲運維等等
2)遊戲運維又有分工,分為開發運維、應用運維(業務運維)和系統運維
開發運維:是給應用運維開發運維工具和運維平台的
應用運維:是給業務上線、維護和做故障排除的,用開發運維開發出來的工具給業務上線、維護、做故障排查
系統運維:是給應用運維提供業務上的基礎設施,比如:系統、網絡、監控、硬體等等
總結:開發運維和系統運維給應用運維提供了“工具”和“基礎設施”上的支撐
開發運維、應用運維和系統運維他們的工作是環環相扣的
2、在工作中,運維人員經常需要跟營運人員打交道,請問營運人員是做什麼工作的?
遊戲營運要做的一個事情除了協調工作以外,還需要與各平台溝通,做好開服的時間、開服數、使用者導量、活動等計劃
3、現在給你三百台伺服器,你怎麼對他們進行管理?
管理3百台伺服器的方式:
1)設定跳闆機,使用統一賬号登入,便于安全與登入的考量。
2)使用salt、ansiable、puppet進行系統的統一排程與配置的統一管理。
3)建立簡單的伺服器的系統、配置、應用的cmdb資訊管理。便于查閱每台伺服器上的各種資訊記錄。
4、簡述raid0 raid1 raid5 三種工作模式的工作原理及特點
RAID,可以把硬碟整合成一個大磁盤,還可以在大磁盤上再分區,放資料
還有一個大功能,多塊盤放在一起可以有備援(備份)
RAID整合方式有很多,常用的:0 1 5 10
RAID 0,可以是一塊盤和N個盤組合
其優點讀寫快,是RAID中最好的
缺點:沒有備援,一塊壞了資料就全沒有了
RAID 1,隻能2塊盤,盤的大小可以不一樣,以小的為準
10G+10G隻有10G,另一個做備份。它有100%的備援,缺點:浪費資源,成本高
RAID 5 ,3塊盤,容量計算10*(n-1),損失一塊盤
特點,讀寫性能一般,讀還好一點,寫不好
備援從好到壞:RAID1 RAID10 RAID 5 RAID0
性能從好到壞:RAID0 RAID10 RAID5 RAID1
成本從低到高:RAID0 RAID5 RAID1 RAID10
單台伺服器:很重要盤不多,系統盤,RAID1
資料庫伺服器:主庫:RAID10 從庫 RAID5RAID0(為了維護成本,RAID10)
WEB伺服器,如果沒有太多的資料的話,RAID5,RAID0(單盤)
有多台,監控、應用伺服器,RAID0 RAID5
我們會根據資料的存儲和通路的需求,去比對對應的RAID級别
5、LVS、Nginx、HAproxy有什麼差別?工作中你怎麼選擇?
LVS:是基于四層的轉發
HAproxy:是基于四層和七層的轉發,是專業的代理伺服器
Nginx:是WEB伺服器,緩存伺服器,又是反向代理伺服器,可以做七層的轉發
差別:LVS由于是基于四層的轉發是以隻能做端口的轉發,而基于URL的、基于目錄的這種轉發LVS就做不了
工作選擇:
HAproxy和Nginx由于可以做七層的轉發,是以URL和目錄的轉發都可以做,在很大并發量的時候我們就要選擇LVS,像中小型公司的話并發量沒那麼大,選擇HAproxy或者Nginx足已,由于HAproxy由是專業的代理伺服器,配置簡單,是以中小型企業推薦使用HAproxy
6、Squid、Varinsh和Nginx有什麼差別,工作中你怎麼選擇?
Squid、Varinsh和Nginx都是代理伺服器
什麼是代理伺服器:
能當替使用者去通路公網,并且能把通路到的資料緩存到伺服器本地,等使用者下次再通路相同的資源的時候,代理伺服器直接從本地回應給使用者,當本地沒有的時候,我代替你去通路公網,我接收你的請求,我先在我自已的本地緩存找,如果我本地緩存有,我直接從我本地的緩存裡回複你,如果我在我本地沒有找到你要通路的緩存的資料,那麼代理伺服器就會代替你去通路公網
差別:
1)Nginx本來是反向代理/web伺服器,用了插件可以做做這個副業但是本身不支援特性挺多,隻能緩存靜态檔案
2)從這些功能上。varnish和squid是專業的cache服務,而nginx這些是第三方子產品完成
3)varnish本身的技術上優勢要高于squid,它采用了可視化頁面緩存技術
在記憶體的利用上,Varnish比Squid具有優勢,性能要比Squid高。
還有強大的通過Varnish管理端口,可以使用正規表達式快速、批量地清除部分緩存
它是記憶體緩存,速度一流,但是記憶體緩存也限制了其容量,緩存頁面和圖檔一般是挺好的
4)squid的優勢在于完整的龐大的cache技術資料,和很多的應用生産環境
工作中選擇:
要做cache服務的話,我們肯定是要選擇專業的cache服務,優先選擇squid或者varnish。
7、Tomcat和Resin有什麼差別,工作中你怎麼選擇?
差別:Tomcat使用者數多,可參考文檔多,Resin使用者數少,可考慮文檔少
最主要差別則是Tomcat是标準的java容器,不過性能方面比resin的要差一些
但穩定性和java程式的相容性,應該是比resin的要好
工作中選擇:現在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求穩定和程式的相容
8、什麼是中間件?什麼是jdk?
中間件介紹:
中間件是一種獨立的系統軟體或服務程式,分布式應用軟體借助這種軟體在不同的技術之間共享資源
中間件位于客戶機/ 伺服器的作業系統之上,管理計算機資源和網絡通訊
是連接配接兩個獨立應用程式或獨立系統的軟體。相連接配接的系統,即使它們具有不同的接口
但通過中間件互相之間仍能交換資訊。執行中間件的一個關鍵途徑是資訊傳遞,通過中間件,應用程式可以工作于多平台或OS環境。
jdk:jdk是Java的開發工具包,它是一種用于建構在 Java 平台上釋出的應用程式、applet 群組件的開發環境
9、講述一下Tomcat8005、8009、8080三個端口的含義?
8005==》 關閉時使用
8009==》 為AJP端口,即容器使用,如Apache能通過AJP協定通路Tomcat的8009端口
8080==》 一般應用使用
10、什麼叫CDN?
即内容分發網絡
其目的是通過在現有的Internet中增加一層新的網絡架構,将網站的内容釋出到最接近使用者的網絡邊緣,使使用者可就近取得所需的内容,提高使用者通路網站的速度
11、什麼叫網站灰階釋出?
灰階釋出是指在黑與白之間,能夠平滑過渡的一種釋出方式
AB test就是一種灰階釋出方式,讓一部使用者繼續用A,一部分使用者開始用B,如果使用者對B沒有什麼反對意見,那麼逐漸擴大範圍,把所有使用者都遷移到B上面來灰階釋出可以保證整體系統的穩定,在初始灰階的時候就可以發現、調整問題,以保證其影響度
12、簡述DNS進行域名解析的過程?
使用者要通路www.baidu.com,會先找本機的host檔案,再找本地設定的DNS伺服器,如果也沒有的話,就去網絡中找根伺服器,根伺服器回報結果,說隻能提供一級域名伺服器.cn,就去找一級域名伺服器,一級域名伺服器說隻能提供二級域名伺服器.com.cn,就去找二級域名伺服器,二級域伺服器隻能提供三級域名伺服器.baidu.com.cn,就去找三級域名伺服器,三級域名伺服器正好有這個網站www.baidu.com,然後發給請求的伺服器,儲存一份之後,再發給用戶端
13、RabbitMQ是什麼東西?
RabbitMQ也就是消息隊列中間件,消息中間件是在消息的傳息過程中儲存消息的容器
消息中間件再将消息從它的源中到它的目标中标時充當中間人的作用
隊列的主要目的是提供路由并保證消息的傳遞;如果發送消息時接收者不可用
消息隊列不會保留消息,直到可以成功地傳遞為止,當然,消息隊列儲存消息也是有期限地
14、講一下Keepalived的工作原理?
在一個虛拟路由器中,隻有作為MASTER的VRRP路由器會一直發送VRRP通告資訊,
BACKUP不會搶占MASTER,除非它的優先級更高。當MASTER不可用時(BACKUP收不到通告資訊
多台BACKUP中優先級最高的這台會被搶占為MASTER。這種搶占是非常快速的(<1s),以保證服務的連續性
由于安全性考慮,VRRP包使用了加密協定進行加密。BACKUP不會發送通告資訊,隻會接收通告資訊
15、講述一下LVS三種模式的工作過程?
LVS 有三種負載均衡的模式,分别是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式)
一、NAT模式(VS-NAT)
原理:就是把用戶端發來的資料包的IP頭的目的位址,在負載均衡器上換成其中一台RS的IP位址
并發至此RS來處理,RS處理完後把資料交給負載均衡器,負載均衡器再把資料包原IP位址改為自己的IP
将目的位址改為用戶端IP位址即可期間,無論是進來的流量,還是出去的流量,都必須經過負載均衡器
優點:叢集中的實體伺服器可以使用任何支援TCP/IP作業系統,隻有負載均衡器需要一個合法的IP位址
缺點:擴充性有限。當伺服器節點(普通PC伺服器)增長過多時,負載均衡器将成為整個系統的瓶頸
因為所有的請求包和應答包的流向都經過負載均衡器。當伺服器節點過多時
大量的資料包都交彙在負載均衡器那,速度就會變慢!
二、IP隧道模式(VS-TUN)
原理:首先要知道,網際網路上的大多Internet服務的請求包很短小,而應答包通常很大
那麼隧道模式就是,把用戶端發來的資料包,封裝一個新的IP頭标記(僅目的IP)發給RS
RS收到後,先把資料包的頭解開,還原資料包,處理後,直接傳回給用戶端,不需要再經過
負載均衡器。注意,由于RS需要對負載均衡器發過來的資料包進行還原,是以說必須支援
IPTUNNEL協定,是以,在RS的核心中,必須編譯支援IPTUNNEL這個選項
優點:負載均衡器隻負責将請求包分發給後端節點伺服器,而RS将應答包直接發給使用者
是以,減少了負載均衡器的大量資料流動,負載均衡器不再是系統的瓶頸,就能處理很巨大的請求量
這種方式,一台負載均衡器能夠為很多RS進行分發。而且跑在公網上就能進行不同地域的分發。
缺點:隧道模式的RS節點需要合法IP,這種方式需要所有的伺服器支援”IP Tunneling”
(IP Encapsulation)協定,伺服器可能隻局限在部分Linux系統上
三、直接路由模式(VS-DR)
原理:負載均衡器和RS都使用同一個IP對外服務但隻有DR對ARP請求進行響應
所有RS對本身這個IP的ARP請求保持靜默也就是說,網關會把對這個服務IP的請求全部定向給DR
而DR收到資料包後根據排程算法,找出對應的RS,把目的MAC位址改為RS的MAC(因為IP一緻)
并将請求分發給這台RS這時RS收到這個資料包,處理完成之後,由于IP一緻,可以直接将資料返給客戶
則等于直接從用戶端收到這個資料包無異,處理後直接傳回給用戶端
由于負載均衡器要對二層標頭進行改換,是以負載均衡器和RS之間必須在一個廣播域
也可以簡單的了解為在同一台交換機上
優點:和TUN(隧道模式)一樣,負載均衡器也隻是分發請求,應答包通過單獨的路由方法傳回給用戶端
與VS-TUN相比,VS-DR這種實作方式不需要隧道結構,是以可以使用大多數作業系統做為實體伺服器。
缺點:(不能說缺點,隻能說是不足)要求負載均衡器的網卡必須與實體網卡在一個實體段上。
16、mysql的innodb如何定位鎖問題,mysql如何減少主從複制延遲?
mysql的innodb如何定位鎖問題:
在使用 show engine innodb status檢查引擎狀态時,發現了死鎖問題
在5.5中,information_schema 庫中增加了三個關于鎖的表(MEMORY引擎)
innodb_trx ## 目前運作的所有事務
innodb_locks ## 目前出現的鎖
innodb_lock_waits ## 鎖等待的對應關系
mysql如何減少主從複制延遲:
如果延遲比較大,就先确認以下幾個因素:
從庫硬體比主庫差,導緻複制延遲
主從複制單線程,如果主庫寫并發太大,來不及傳送到從庫就會導緻延遲。
更高版本的mysql可以支援多線程複制
慢SQL語句過多
網絡延遲
master負載,主庫讀寫壓力大,導緻複制延遲,架構的前端要加buffer及緩存層
slave負載,一般的做法是,使用多台slave來分攤讀請求,再從這些slave中取一台專用的伺服器,隻作為備份用,不進行其他任何操作.另外, 2個可以減少延遲的參數:–slave-net-timeout=seconds 機關為秒 預設設定為 3600秒
參數含義:當slave從主資料庫讀取log資料失敗後,等待多久重建立立連接配接并擷取資料
–master-connect-retry=seconds 機關為秒 預設設定為 60秒
參數含義:當重建立立主從連接配接時,如果連接配接建立失敗,間隔多久後重試
通常配置以上2個參數可以減少網絡問題導緻的主從資料同步延遲
MySQL資料庫主從同步延遲解決方案
最簡單的減少slave同步延時的方案就是在架構上做優化,盡量讓主庫的DDL快速執行,還有就是主庫是寫,對資料安全性較高,比如sync_binlog=1,innodb_flush_log_at_trx_commit= 1 之類的設定,而slave則不需要這麼高的資料安全,完全可以講sync_binlog設定為0或者關閉binlog,innodb_flushlog也可以設定為0來提高sql的執行效率。另外就是使用比主庫更好的硬體裝置作為slave
17、如何重置mysql root密碼?
一、 在已知MYSQL資料庫的ROOT使用者密碼的情況下,修改密碼的方法:
1、 在SHELL環境下,使用mysqladmin指令設定:
mysqladmin –u root –p password “新密碼” 回車後要求輸入舊密碼
2、 在mysql>環境中,使用update指令,直接更新mysql庫user表的資料:
Update mysql.user set password=password(‘新密碼’) where user=’root’;
flush privileges;
注意:mysql語句要以分号”;”結束
3、 在mysql>環境中,使用grant指令,修改root使用者的授權權限。
grant all on . to root@’localhost’ identified by ‘新密碼’;
二、 如查忘記了mysql資料庫的ROOT使用者的密碼,又如何做呢?方法如下:
1、 關閉目前運作的mysqld服務程式:service mysqld stop(要先将mysqld添加為系統服務)
2、 使用mysqld_safe腳本以安全模式(不加載授權表)啟動mysqld 服務
/usr/local/mysql/bin/mysqld_safe –skip-grant-table &
3、 使用空密碼的root使用者登入資料庫,重新設定ROOT使用者的密碼
#mysql -u root
Mysql> Update mysql.user set password=password(‘新密碼’) where user=’root’;
Mysql> flush privileges;
18、lvs/nginx/haproxy優缺點
Nginx的優點是:
1、工作在網絡的7層之上,可以針對http應用做一些分流的政策,比如針對域名、目錄結構,它的正則規則比HAProxy更為強大和靈活,這也是它目前廣泛流行的主要原因之一,Nginx單憑這點可利用的場合就遠多于LVS了。
2、Nginx對網絡穩定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢之一,相反LVS對網絡穩定性依賴比較大,這點本人深有體會;
3、Nginx安裝和配置比較簡單,測試起來比較友善,它基本能把錯誤用日志列印出來,LVS的配置、測試就要花比較長的時間了,LVS對網絡依賴比較大。
4、可以承擔高負載壓力且穩定,在硬體不差的情況下一般能支撐幾萬次的并發量,負載度比LVS相對小些。
5、Nginx可以通過端口檢測到伺服器内部的故障,比如根據伺服器處理網頁傳回的狀态碼、逾時等等,并且會把傳回錯誤的請求重新送出到另一個節點,不過其中缺點就是不支援url來檢測。比如使用者正在上傳一個檔案,而處理該上傳的節點剛好在上傳過程中出現故障,Nginx會把上傳切到另一台伺服器重新處理,而LVS就直接斷掉了,如果是上傳一個很大的檔案或者很重要的檔案的話,使用者可能會是以而不滿。
6、Nginx不僅僅是一款優秀的負載均衡器/反向代理軟體,它同時也是功能強大的Web應用伺服器,LNMP也是近幾年非常流行的web架構,在高流量的環境中穩定性也很好。
7、Nginx現在作為Web反向加速緩存越來越成熟了,速度比傳統的Squid伺服器更快,可考慮用其作為反向代理加速器
8、Nginx可作為中層反向代理使用,這一層面Nginx基本上無對手,唯一可以對比Nginx的就隻有lighttpd了,不過lighttpd目前還沒有做到Nginx完全的功能,配置也不那麼清晰易讀,社群資料也遠遠沒Nginx活躍
9、Nginx也可作為靜态網頁和圖檔伺服器,這方面的性能也無對手。還有Nginx社群非常活躍,第三方子產品也很多
Nginx的缺點是:
1、Nginx僅能支援http、https和Email協定,這樣就在适用範圍上面小些,這個是它的缺點
2、對後端伺服器的健康檢查,隻支援通過端口來檢測,不支援通過url來檢測
不支援Session的直接保持,但能通過ip_hash來解決
LVS:使用Linux核心叢集實作一個高性能、高可用的負載均衡伺服器,它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)
LVS的優點是:
1、抗負載能力強、是工作在網絡4層之上僅作分發之用,沒有流量的産生,這個特點也決定了它在負載均衡軟體裡的性能最強的,對記憶體和cpu資源消耗比較低
2、配置性比較低,這是一個缺點也是一個優點,因為沒有可太多配置的東西,是以并不需要太多接觸,大大減少了人為出錯的幾率
3、工作穩定,因為其本身抗負載能力很強,自身有完整的雙機熱備方案,如LVS+Keepalived,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived
4、無流量,LVS隻分發請求,而流量并不從它本身出去,這點保證了均衡器IO的性能不會收到大流量的影響。
5、應用範圍較廣,因為LVS工作在4層,是以它幾乎可對所有應用做負載均衡,包括http、資料庫、線上聊天室等
LVS的缺點是:
1、軟體本身不支援正規表達式處理,不能做動靜分離
而現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在
2、如果是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較複雜了,特别後面有Windows Server的機器的話,如果實施及配置還有維護過程就比較複雜了,相對而言,Nginx/HAProxy+Keepalived就簡單多了。
HAProxy的特點是:
1、HAProxy也是支援虛拟主機的。
2、HAProxy的優點能夠補充Nginx的一些缺點,比如支援Session的保持,Cookie的引導,同時支援通過擷取指定的url來檢測後端伺服器的狀态
3、HAProxy跟LVS類似,本身就隻是一款負載均衡軟體,單純從效率上來講HAProxy會比Nginx有更出色的負載均衡速度,在并發處理上也是優于Nginx的
4、HAProxy支援TCP協定的負載均衡轉發,可以對MySQL讀進行負載均衡,對後端的MySQL節點進行檢測和負載均衡,大家可以用LVS+Keepalived對MySQL主從做負載均衡
5、HAProxy負載均衡政策非常多,HAProxy的負載均衡算法現在具體有如下8種:
①roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的;
② static-rr,表示根據權重,建議關注;
③leastconn,表示最少連接配接者先處理,建議關注;
④ source,表示根據請求源IP,這個跟Nginx的IP_hash機制類似
我們用其作為解決session問題的一種方法,建議關注;
⑤ri,表示根據請求的URI;
⑥rl_param,表示根據請求的URl參數’balance url_param’ requires an URL parameter name;
⑦hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;
⑧rdp-cookie(name),表示根據據cookie(name)來鎖定并哈希每一次TCP請求。
19、mysql資料備份工具
mysqldump工具,mysqldump是mysql自帶的備份工具,目錄在bin目錄下面:/usr/local/mysql/bin/mysqldump,支援基于innodb的熱備份,但是由于是邏輯備份,是以速度不是很快,适合備份資料比較小的場景,Mysqldump完全備份+二進制日志可以實作基于時間點的恢複。
基于LVM快照備份
在實體備份中,有基于檔案系統的實體備份(LVM的快照),也可以直接用tar之類的指令對整個資料庫目錄
進行打包備份,但是這些隻能進行泠備份,不同的存儲引擎備份的也不一樣,myisam自動備份到表級别
而innodb不開啟獨立表空間的話隻能備份整個資料庫。
tar包備份
percona提供的xtrabackup工具,支援innodb的實體熱備份,支援完全備份,增量備份,而且速度非常快,支援innodb存儲引起的資料在不同,資料庫之間遷移,支援複制模式下的從機備份恢複備份恢複,為了讓xtrabackup支援更多的功能擴充,可以設立獨立表空間,打開 innodb_file_per_table功能,啟用之後可以支援單獨的表備份
20、keepalive的工作原理和如何做到健康檢查
keepalived是以VRRP協定為實作基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛拟路由備援協定。
虛拟路由備援協定,可以認為是實作路由器高可用的協定,即将N台提供相同功能的路由器組成一個路由器組
這個組裡面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在區域網路内
其他機器的預設路由為該vip),master會發多點傳播,當backup收不到vrrp包時就認為master宕掉了
這時就需要根據VRRP的優先級來選舉一個backup當master。這樣就可以保證路由器的高可用了
keepalived主要有三個子產品,分别是core、check和vrrp。core子產品為keepalived的核心,負責主程序的啟動、維護及全局配置檔案的加載和解析。check負責健康檢查,包括常見的各種檢查方式,vrrp子產品是來實作VRRP協定的
Keepalived健康檢查方式配置
HTTP_GET|SSL_GET
HTTP_GET | SSL_GET
{
url {
path /# HTTP/SSL 檢查的url可以是多個
digest # HTTP/SSL 檢查後的摘要資訊用工具genhash生成
status_code 200# HTTP/SSL 檢查傳回的狀态碼
}
connect_port 80 # 連接配接端口
bindto
connect_timeout 3 # 連接配接逾時時間
nb_get_retry 3 # 重連次數
delay_before_retry 2 #連接配接間隔時間
}