1、分布式與集群的區別是什麼?
簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。
例如:
如果一個任務由10個子任務組成,每個子任務單獨執行需1小時,則在一台伺服器上執行改任務需10小時。
採用分布式方案,提供10台伺服器,每台伺服器只負責處理一個子任務,不考慮子任務間的依賴關系,執行完這個任務只需一個小時。(這種工作模式的一個典型代表就是Hadoop的Map/Rece分布式計算模型)
而採用集群方案,同樣提供10台伺服器,每台伺服器都能獨立處理這個任務。假設有10個任務同時到達,10個伺服器將同時工作,10小後,10個任務同時完成,這樣,整身來看,還是1小時內完成一個任務!
以下是摘抄自網路文章:
一、集群概念
1. 兩大關鍵特性
集群是一組協同工作的服務實體,用以提供比單一服務實體更具擴展性與可用性的服務平台。在客戶端看來,一個集群就象是一個服務實體,但事實上集群由一組服務實體組成。與單一服務實體相比較,集群提供了以下兩個關鍵特性:
· 可擴展性--集群的性能不限於單一的服務實體,新的服務實體可以動態地加入到集群,從而增強集群的性能。
· 高可用性--集群通過服務實體冗餘使客戶端免於輕易遇到out of service的警告。在集群中,同樣的服務可以由多個服務實體提供。如果一個服務實體失敗了,另一個服務實體會接管失敗的服務實體。集群提供的從一個出 錯的服務實體恢復到另一個服務實體的功能增強了應用的可用性。
2. 兩大能力
為了具有可擴展性和高可用性特點,集群的必須具備以下兩大能力:
· 負載均衡--負載均衡能把任務比較均衡地分布到集群環境下的計算和網路資源。
· 錯誤恢復--由於某種原因,執行某個任務的資源出現故障,另一服務實體中執行同一任務的資源接著完成任務。這種由於一個實體中的資源不能工作,另一個實體中的資源透明的繼續完成任務的過程叫錯誤恢復。
負載均衡和錯誤恢復都要求各服務實體中有執行同一任務的資源存在,而且對於同一任務的各個資源來說,執行任務所需的信息視圖(信息上下文)必須是一樣的。
3. 兩大技術
實現集群務必要有以下兩大技術:
· 集群地址--集群由多個服務實體組成,集群客戶端通過訪問集群的集群地址獲取集群內部各服務實體的功能。具有單一集群地址(也叫單一影像)是集群的一個基本特徵。維護集群地址的設置被稱為負載均衡器。負載均衡器內部負責管理各個服務實體的加入和退出,外部負責集群地址向內部服務實體地址的轉換。有的負載均衡器實現真正的負載均衡演算法,有的只支持任務的轉換。只實現任務轉換的負載均衡器適用於支持ACTIVE-STANDBY的集群環境,在那裡,集群中只有一個服務實體工作,當正在工作的服務實體發生故障時,負載均衡器把後來的任務轉向另外一個服務實體。
· 內部通信--為了能協同工作、實現負載均衡和錯誤恢復,集群各實體間必須時常通信,比如負載均衡器對服務實體心跳測試信息、服務實體間任務執行上下文信息的通信。
具有同一個集群地址使得客戶端能訪問集群提供的計算服務,一個集群地址下隱藏了各個服務實體的內部地址,使得客戶要求的計算服務能在各個服務實體之間分布。內部通信是集群能正常運轉的基礎,它使得集群具有均衡負載和錯誤恢復的能力。
二、集群分類
Linux集群主要分成三大類(高可用集群, 負載均衡集群,科學計算集群)
高可用集群(High Availability Cluster)
負載均衡集群(Load Balance Cluster)
科學計算集群(High Performance Computing Cluster)
具體包括:
Linux High Availability 高可用集群
(普通兩節點雙機熱備,多節點HA集群,RAC, shared, share-nothing集群等)
Linux Load Balance 負載均衡集群
(LVS等....)
Linux High Performance Computing 高性能科學計算集群
(Beowulf 類集群....)
三、詳細介紹
1. 高可用集群(High Availability Cluster)
常見的就是2個節點做成的HA集群,有很多通俗的不科學的名稱,比如"雙機熱備","雙機互備","雙機"。
高可用集群解決的是保障用戶的應用程序持續對外提供服務的能力。 (請注意高可用集群既不是用來保護業務數據的,保護的是用戶的業務程序對外不間斷提供服務,把因軟體/硬體/人為造成的故障對業務的影響降低到最小程度)。
2. 負載均衡集群(Load Balance Cluster)
負載均衡系統:集群中所有的節點都處於活動狀態,它們分攤系統的工作負載。一般Web伺服器集群、資料庫集群和應用伺服器集群都屬於這種類型。
負載均衡集群一般用於相應網路請求的網頁伺服器,資料庫伺服器。這種集群可以在接到請求時,檢查接受請求較少,不繁忙的伺服器,並把請求轉到這些伺服器上。從檢查其他伺服器狀態這一點上看,負載均衡和容錯集群很接近,不同之處是數量上更多。
3. 科學計算集群(High Performance Computing Cluster)
高性能計算(High Perfermance Computing)集群,簡稱HPC集群。這類集群致力於提供單個計算機所不能提供的強大的計算能力。
3.1 高性能計算分類
3.1.1 高吞吐計算(High-throughput Computing)
有一類高性能計算,可以把它分成若干可以並行的子任務,而且各個子任務彼此間沒有什麼關聯。象在家搜尋外星人( SETI@HOME -- Search for Extraterrestrial Intelligence at Home )就是這一類型應用。這一項目是利用Internet上的閑置的計算資源來搜尋外星人。SETI項目的伺服器將一組數據和數據模式發給Internet上參加SETI的計算節點,計算節點在給定的數據上用給定的模式進行搜索,然後將搜索的結果發給伺服器。伺服器負責將從各個計算節點返回的數據匯集成完整的 數據。因為這種類型應用的一個共同特徵是在海量數據上搜索某些模式,所以把這類計算稱為高吞吐計算。所謂的Internet計算都屬於這一類。按照 Flynn的分類,高吞吐計算屬於SIMD(Single Instruction/Multiple Data)的范疇。
3.1.2 分布計算(Distributed Computing)
另一類計算剛好和高吞吐計算相反,它們雖然可以給分成若干並行的子任務,但是子任務間聯系很緊密,需要大量的數據交換。按照Flynn的分類,分布式的高性能計算屬於MIMD(Multiple Instruction/Multiple Data)的范疇。
四、分布式(集群)與集群的聯系與區別
分布式是指將不同的業務分布在不同的地方;而集群指的是將幾台伺服器集中在一起,實現同一業務。
分布式中的每一個節點,都可以做集群。 而集群並不一定就是分布式的。
舉例:就比如新浪網,訪問的人多了,他可以做一個群集,前面放一個響應伺服器,後面幾台伺服器完成同一業務,如果有業務訪問的時候,響應伺服器看哪台伺服器的負載不是很重,就將給哪一台去完成。
而分布式,從窄意上理解,也跟集群差不多, 但是它的組織比較鬆散,不像集群,有一個組織性,一台伺服器垮了,其它的伺服器可以頂上來。
分布式的每一個節點,都完成不同的業務,一個節點垮了,那這個業務就不可訪問了。
2、集群、負載均衡與分布式有什麼區別?
集群、負載均衡與分布式的區別:
1、Linux集群主要分成三大類( 高可用集群, 負載均衡集群,科學計算集群)(下面只介紹負載均衡集群)
負載均衡集群(Load Balance Cluster)
負載均衡系統:集群中所有的節點都處於活動狀態,它們分攤系統的工作負載。一般Web伺服器集群、資料庫集群和應用伺服器集群都屬於這種類型。
負載均衡集群一般用於相應網路請求的網頁伺服器,資料庫伺服器。這種集群可以在接到請求時,檢查接受請求較少,不繁忙的伺服器,並把請求轉到這些伺服器上。從檢查其他伺服器狀態這一點上看,負載均衡和容錯集群很接近,不同之處是數量上更多。
2、負載均衡系統: 負載均衡又有DNS負載均衡(比較常用)、IP負載均衡、反向代理負載均衡等,也就是在集群中有伺服器A、B、C,它們都是互不影響,互不相乾的,任何一台的機器宕了,都不會影響其他機器的運行,當用戶來一個請求,有負載均衡器的演算法決定由哪台機器來處理,假如你的演算法是採用round演算法,有用戶a、b、c,那麼分別由伺服器A、B、C來處理;
3、分布式是指將不同的業務分布在不同的地方。
而集群指的是將幾台伺服器集中在一起,實現同一業務。
分布式中的每一個節點,都可以做集群。
而集群並不一定就是分布式的。
舉例:就比如新浪網,訪問的人多了,他可以做一個群集,前面放一個響應伺服器,後面幾台伺服器完成同一業務,如果有業務訪問的時候,響應伺服器看哪台伺服器的負載不是很重,就將給哪一台去完成。
而分布式,從窄意上理解,也跟集群差不多, 但是它的組織比較鬆散,不像集群,有一個組織性,一台伺服器垮了,其它的伺服器可以頂上來。
分布式的每一個節點,都完成不同的業務,一個節點垮了,哪這個業務就不可訪問了。
3、如何最快搭建LINUX伺服器集群
1.2.並行技術
這是一個非常簡單的建造四節點的小集群系統的例子,它是構建在Linux操作系統上,通過MPICH軟體包實現的,希望這個小例子能讓大家對集群系統的構建有一個最基本的了解。
2.使用MPICH構建一個四節點的集群系統
這是一個非常簡單的建造四節點的小集群系統的例子,它是構建在Linux操作系統上,通過MPICH軟體包實現的,希望這個小例子能讓大家對集群系統的構建有一個最基本的了解。
2.1 所需設備
1).4台採用Pentium II處理器的PC機,每台配
置64M內存,2GB以上的硬碟,和EIDE介面的光碟驅動器。
2).5塊100M快速乙太網卡,如SMC 9332 EtherPower 10/100(其中四塊卡用於連接集群中的結點,另外一塊用於將集群中的其中的一個節點與其它網路連接。)
3).5根足夠連接集群系統中每個節點的,使用5類非屏蔽雙絞線製作的RJ45纜線
4).1個快速乙太網(100BASE-Tx)的集線器或交換機
5).1張Linux安裝盤
2.2 構建說明
對計算機硬體不熟的人,實施以下這些構建步驟會感到吃力。如果是這樣,請找一些有經驗的專業人士尋求幫助。
1. 准備好要使用的採用Pentium II處理器的PC機。確信所有的PC機都還沒有接上電源,打開PC機的機箱,在准備與網路上的其它設備連接的PC機上安裝上兩塊快速乙太網卡,在其它的 PC機上安裝上一塊快速乙太網卡。當然別忘了要加上附加的內存。確定完成後蓋上機箱,接上電源。
2. 使用4根RJ45線纜將四台PC機連到快速乙太網的集線器或交換機上。使用剩下的1根RJ45線將額外的乙太網卡(用於與其它網路相連的那塊,這樣機構就可以用上集群)連接到機構的區域網上(假定你的機構區域網也是快速乙太網),然後打開電源。
3. 使用LINUX安裝盤在每一台PC機上安裝。請確信在LINUX系統中安裝了C編譯器和C的LIB庫。當你配置TCP/IP時,建議你為四台PC分別指定為192.168.1.1、192.168.1.2、192.168.1.3、192.168.1.4。第一台PC為你的伺服器節點(擁有兩塊網卡的那台)。在這個伺服器節點上的那塊與機構區域網相連的網卡,你應該為其指定一個與機構區域網吻合的IP地址。
4.當所有PC都裝好Linux系統後,編輯每台機器的/etc/hosts文件,讓其包含以下幾行:
192.168.1.1 node1 server
192.168.1.2 node2
192.168.1.3 node3
192.168.1.4 node4
編輯每台機器的/etc/hosts.equiv文件,使其包含以下幾行:
node1
node2
node3
node4
$p#
以下的這些配置是為了讓其能使用MPICH』s p4策略去執行分布式的並行處理應用。
1. 在伺服器節點
,建一個/mirror目錄,並將其配置成為NFS伺服器,並在/etc/exports文件中增加一行:
/mirror node1(rw) node2(rw) node3(rw) node4(rw)
2. 在其他節點上,也建一個/mirror目錄,關在/etc/fstab文件中增加一行:
server:/mirror /mirror nfs rw,bg,soft 0 0
3. /mirror這個目錄從伺服器上輸出,裝載在各個客戶端,以便在各個節點間進行軟體任務的分發。
4. 在伺服器節點上,安裝MPICH。MPICH的文檔可在
5.任何一個集群用戶(你必須在每一個節點新建一個相同的用戶),必須在/mirror目錄下建一個屬於它的子目錄,如 /mirror/username,用來存放MPI程序和共享數據文件。這種情況,用戶僅僅需要在伺服器節點上編譯MPI程序,然後將編譯後的程序拷貝到在/mirror目錄下屬於它的的子目錄中,然後從他在/mirror目錄下屬於它的的子目錄下使用p4 MPI策略運行MPI程序。
2.3 MPICH安裝指南
1.如果你有gunzip,就d下載mpich.tar.gz,要不然就下載mpich.tar.Z。你可以到http://www.mcs.anl.gov/mpi/mpich/downloa下載,也可以使用匿名FTP到ftp.mcs.anl.gov的pub/mpi目錄拿。(如果你覺得這個東西太大,你可以到pub/mpi/mpisplit中取分隔成塊的幾個小包,然後用cat命令將它們合並)
2.解壓:gunzip ;c mpich.tar.gz tar xovf-(或zcat mpich.tar.Z tar xovf-)
3.進入mpich目錄
4.執行:./configure為MPICH選擇一套適合你的實際軟硬體環境的參數組,如果你對這些默認選擇的參數不滿意,可以自己進行配置(具體參見MPICH的配置文檔)。最好選擇一個指定的目錄來安裝和配置MPICH,例如:
./configure -prefix=/usr/local/mpich-1.2.0
5.執行:make >&make.log 這會花一段較長的時間,不同的硬體環境花的時間也就不同,可能從10分鍾到1個小時,甚至更多。
6.(可選)在工作站網路,或是一台單獨的工作站,編輯mpich/util/machines/machines.xxx(xxx是MPICH對你機器體系結構取的名稱,你能很容易的認出來)以反映你工作站的當地主機名。你完全可以跳過這一步。在集群中,這一步不需要。
7.(可選)編譯、運行一個簡單的測試程序:
cd examples/basic
make cpi
ln ;s ../../bin/mpirun mpirun
./mpirun ;np 4 cpi
此時,你就在你的系統上運行了一個MPI程序。
8.(可選)構建MPICH其餘的環境,為ch_p4策略使
用安全的服務會使得任何啟動速度加快,你可以執行以下命令構建:
make serv_p4
(serv_p4是一個較新的P4安全服務的版本,它包含在MPICH 1.2.0版中),nupshot程序是upshot程序的一個更快版本,但他需要tk 3.6版的源代碼。如果你有這個包,你就用以下命令可以構建它:
make nupshot
9.(可選)如果你想將MPICH安裝到一個公用的地方讓其它人使用它,你可以執行:
make install 或 bin/mpiinstall
你可以使用-prefix選項指定MPICH安裝目錄。安裝後將生成include、lib、bin、sbin、www和man目錄以及一個小小的示例目錄,
到此你可以通告所有的用戶如何編譯、執行一個MPI程序。
4、創建Linux伺服器集群,沒有共享磁碟,可以用其他方法代替嗎?如果有,求詳解!!請大神們不吝賜教!
可以使用NFS(網路文件系統)來實現。
一、NFS服務簡介
NFS 是Network File System的縮寫,即網路文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公布。功能是通過網路讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網路訪問位於伺服器磁碟中的數據,是在類Unix系統間實現磁碟文件共享的一種方法。
NFS 的基本原則是「容許不同的客戶端及服務端通過一組RPC分享相同的文件系統」,它是獨立於操作系統,容許不同硬體及操作系統的系統共同進行文件的分享。
NFS在文件傳送或信息傳送過程中依賴於RPC協議。RPC,遠程過程調用 (Remote Procere Call) 是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網路進行資料的分享,這是因為NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER。所以只要用到NFS的地方都要啟動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應。可以這么理解RPC和NFS的關系:NFS是一個文件系統,而RPC是負責負責信息的傳輸。
二、系統環境
系統平台:CentOS release 5.6 (Final)
NFS Server IP:192.168.1.108
防火牆已關閉/iptables: Firewall is not running.
SELINUX=disabled
三、安裝NFS服務
NFS的安裝是非常簡單的,只需要兩個軟體包即可,而且在通常情況下,是作為系統的默認包安裝的。
nfs-utils-* :包括基本的NFS命令與監控程序
portmap-* :支持安全NFS RPC服務的連接
1、查看系統是否已安裝NFS
系統默認已安裝了nfs-utils portmap 兩個軟體包。
2、如果當前系統中沒有安裝NFS所需的軟體包,需要手工進行安裝。nfs-utils 和portmap 兩個包的安裝文件在系統光碟中都會有。
# mount /dev/cdrom /mnt/cdrom/
# cd /mnt/cdrom/CentOS/
# rpm -ivh portmap-4.0-65.2.2.1.i386.rpm
# rpm -ivh nfs-utils-1.0.9-50.el5.i386.rpm
# rpm -q nfs-utils portmap
四、NFS系統守護進程
nfsd:它是基本的NFS守護進程,主要功能是管理客戶端是否能夠登錄伺服器;
mountd:它是RPC安裝守護進程,主要功能是管理NFS的文件系統。當客戶端順利通過nfsd登錄NFS伺服器後,在使用NFS服務所提供的文件前,還必須通過文件使用許可權的驗證。它會讀取NFS的配置文件/etc/exports來對比客戶端許可權。
portmap:主要功能是進行埠映射工作。當客戶端嘗試連接並使用RPC伺服器提供的服務(如NFS服務)時,portmap會將所管理的與服務對應的埠提供給客戶端,從而使客戶可以通過該埠向伺服器請求服務。
五、NFS伺服器的配置
NFS伺服器的配置相對比較簡單,只需要在相應的配置文件中進行設置,然後啟動NFS伺服器即可。
NFS的常用目錄
/etc/exports NFS服務的主要配置文件
/usr/sbin/exportfs NFS服務的管理命令
/usr/sbin/showmount 客戶端的查看命令
/var/lib/nfs/etab 記錄NFS分享出來的目錄的完整許可權設定值
/var/lib/nfs/xtab 記錄曾經登錄過的客戶端信息
NFS服務的配置文件為 /etc/exports,這個文件是NFS的主要配置文件,不過系統並沒有默認值,所以這個文件不一定會存在,可能要使用vim手動建立,然後在文件裡面寫入配置內容。
/etc/exports文件內容格式:
<輸出目錄> [客戶端1 選項(訪問許可權,用戶映射,其他)] [客戶端2 選項(訪問許可權,用戶映射,其他)]
a. 輸出目錄:
輸出目錄是指NFS系統中需要共享給客戶機使用的目錄;
b. 客戶端:
客戶端是指網路中可以訪問這個NFS輸出目錄的計算機
客戶端常用的指定方式
指定ip地址的主機:192.168.0.200
指定子網中的所有主機:192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名的主機:david.bsmart.cn
指定域中的所有主機:*.bsmart.cn
所有主機:*
c. 選項:
選項用來設置輸出目錄的訪問許可權、用戶映射等。
NFS主要有3類選項:
訪問許可權選項
設置輸出目錄只讀:ro
設置輸出目錄讀寫:rw
用戶映射選項
all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody);
no_all_squash:與all_squash取反(默認設置);
root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置);
no_root_squash:與rootsquash取反;
anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx);
anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶,並指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);
其它選項
secure:限制客戶端只能從小於1024的tcp/ip埠連接nfs伺服器(默認設置);
insecure:允許客戶端從大於1024的tcp/ip埠連接伺服器;
sync:將數據同步寫入內存緩沖區與磁碟中,效率低,但可以保證數據的一致性;
async:將數據先保存在內存緩沖區中,必要時才寫入磁碟;
wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs伺服器將檢查其父目錄的許可權(默認設置);
no_subtree:即使輸出目錄是一個子目錄,nfs伺服器也不檢查其父目錄的許可權,這樣可以提高效率;
六、NFS伺服器的啟動與停止
在對exports文件進行了正確的配置後,就可以啟動NFS伺服器了。
1、啟動NFS伺服器
為了使NFS伺服器能正常工作,需要啟動portmap和nfs兩個服務,並且portmap一定要先於nfs啟動。
# service portmap start
# service nfs start
2、查詢NFS伺服器狀態
# service portmap status
# service nfs status
3、停止NFS伺服器
要停止NFS運行時,需要先停止nfs服務再停止portmap服務,對於系統中有其他服務(如NIS)需要使用時,不需要停止portmap服務
# service nfs stop
# service portmap stop
4、設置NFS伺服器的自動啟動狀態
對於實際的應用系統,每次啟動LINUX系統後都手工啟動nfs伺服器是不現實的,需要設置系統在指定的運行級別自動啟動portmap和nfs服務。
# chkconfig --list portmap
# chkconfig --list nfs
設置portmap和nfs服務在系統運行級別3和5自動啟動。
# chkconfig --level 35 portmap on
# chkconfig --level 35 nfs on
七、實例
1、將NFS Server 的/home/david/ 共享給192.168.1.0/24網段,許可權讀寫。
伺服器端文件詳細如下:
# vi /etc/exports
/home/david 192.168.1.0/24(rw)
2、重啟portmap 和nfs 服務
# service portmap restart
# service nfs restart
# exportfs
3、伺服器端使用showmount命令查詢NFS的共享狀態
# showmount -e//默認查看自己共享的服務,前提是要DNS能解析自己,不然容易報錯
# showmount -a//顯示已經與客戶端連接上的目錄信息
4、客戶端使用showmount命令查詢NFS的共享狀態
# showmount -e NFS伺服器IP
5、客戶端掛載NFS伺服器中的共享目錄
命令格式
# mount NFS伺服器IP:共享目錄 本地掛載點目錄
# mount 192.168.1.108:/home/david/ /tmp/david/
# mount |grep nfs
掛載成功。
查看文件是否和伺服器端一致。
6、NFS的共享許可權和訪問控制
現在我們在/tmp/david/ 裡面建立一個文件,看看許可權是什麼
# touch 20130103
這里出現Permission denied,是因為NFS 伺服器端共享的目錄本身的寫許可權沒有開放給其他用戶,在伺服器端打開該許可權。
# chmod 777 -R /home/david/
再次在客戶端/tmp/david/ 裡面建立一個文件
我用root 用戶建立的文件,變成了nfsnobody 用戶。
NFS有很多默認的參數,打開/var/lib/nfs/etab 查看分享出來的/home/david/ 完整許可權設定值。
# cat /var/lib/nfs/etab
默認就有sync,wdelay,hide 等等,no_root_squash 是讓root保持許可權,root_squash 是把root映射成nobody,no_all_squash 不讓所有用戶保持在掛載目錄中的許可權。所以,root建立的文件所有者是nfsnobody。
下面我們使用普通用戶掛載、寫入文件測試。
# su - david
$ cd /tmp/david/
$ touch 2013david
普通用戶寫入文件時就是自己的名字,這也就保證了伺服器的安全性。
關於許可權的分析
1. 客戶端連接時候,對普通用戶的檢查
a. 如果明確設定了普通用戶被壓縮的身份,那麼此時客戶端用戶的身份轉換為指定用戶;
b. 如果NFS server上面有同名用戶,那麼此時客戶端登錄賬戶的身份轉換為NFS server上面的同名用戶;
c. 如果沒有明確指定,也沒有同名用戶,那麼此時 用戶身份被壓縮成nfsnobody;
2. 客戶端連接的時候,對root的檢查
a. 如果設置no_root_squash,那麼此時root用戶的身份被壓縮為NFS server上面的root;
b. 如果設置了all_squash、anonuid、anongid,此時root 身份被壓縮為指定用戶;
c. 如果沒有明確指定,此時root用戶被壓縮為nfsnobody;
d. 如果同時指定no_root_squash與all_squash 用戶將被壓縮為 nfsnobody,如果設置了anonuid、anongid將被壓縮到所指定的用戶與組;
7、卸載已掛載的NFS共享目錄
# umount /tmp/david/
八、啟動自動掛載nfs文件系統
格式:
<server>:</remote/export> </local/directory> nfs < options> 0 0
# vi /etc/fstab
保存退出,重啟系統。
查看/home/david 有沒有自動掛載。
自動掛載成功。
九、相關命令
1、exportfs
如果我們在啟動了NFS之後又修改了/etc/exports,是不是還要重新啟動nfs呢?這個時候我們就可以用exportfs 命令來使改動立刻生效,該命令格式如下:
# exportfs [-aruv]
-a 全部掛載或卸載 /etc/exports中的內容
-r 重新讀取/etc/exports 中的信息 ,並同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸載單一目錄(和-a一起使用為卸載所有/etc/exports文件中的目錄)
-v 在export的時候,將詳細的信息輸出到屏幕上。
具體例子:
# exportfs -au 卸載所有共享目錄
# exportfs -rv 重新共享所有目錄並輸出詳細信息
2、nfsstat
查看NFS的運行狀態,對於調整NFS的運行有很大幫助。
3、rpcinfo
查看rpc執行信息,可以用於檢測rpc運行情況的工具,利用rpcinfo -p 可以查看出RPC開啟的埠所提供的程序有哪些。
4、showmount
-a 顯示已經於客戶端連接上的目錄信息
-e IP或者hostname 顯示此IP地址分享出來的目錄
5、netstat
可以查看出nfs服務開啟的埠,其中nfs 開啟的是2049,portmap 開啟的是111,其餘則是rpc開啟的。
最後注意兩點,雖然通過許可權設置可以讓普通用戶訪問,但是掛載的時候默認情況下只有root可以去掛載,普通用戶可以執行sudo。
NFS server 關機的時候一點要確保NFS服務關閉,沒有客戶端處於連接狀態!通過showmount -a 可以查看,如果有的話用kill killall pkill 來結束,(-9 強制結束)
5、lmtool可以用集群伺服器嗎
無盤系統其實非常好用,非常適合網吧用,各種無盤軟提供商都針對網吧做了特殊處理和優化的,但是由於各種廣告程序的橫行霸道,導致了無盤客戶機和網吧系統出現各種奇怪的問題,比如網吧秒卡,網吧電腦頓卡,藍屏,一起掉線等問題,很有可能都是由於網吧客戶機的廣告程序導致,今天小編就和大家來分享下利用一款工具查找和處理無盤系統上的廣告程序,下面是來自全球最大的網吧行業論壇-天下網吧論壇的老司機分享的:
支持所有收費、文化、網維等廣告
利用LMTool工具去廣告圖文教程+工具下載
前幾天在Q群里說了下利用LMTool去萬象廣告
雖然很簡單,但是還是有人不懂,所以弄個教程
原理很簡單,禁止這個隨機進程訪問臨時目示(%temp%)下的文件
訪問不了廣告文件,廣告自然就無法顯示
因為進程是隨機的,所以我們提取下這個進程的MD5
首先找到這個進程的隨機名
然後在LMTool控制台找到這台機子右擊——進程管理
找到這個進程右擊——復制MD5
打開LMTool控制台——安全中心——文件攔截——禁止訪問,如下圖
備注隨便填
文件路徑,絕對路徑C:可以
用通配符也可以,如:*AppDataLocalTemp* 或者* emp*
進程信息選MD5,把上面弄到的MD5弄進去
許可權設置,禁讀;當然你們也可以試下全禁,我這邊全禁,無法登錄。
原理很簡單,操作起來也很簡單,但是很多人都不會舉一反三
6、先學java伺服器集群和資料庫集群,該看什麼書?
伺服器集群
一旦在伺服器上安裝並運行了群集服務,該伺服器即可加入群集。群集化操作可以減少單點故障數量,並且實現了群集化資源的高可用性。下述各節簡要介紹了群集創建和群集操作中的節點行為。注意:有關安裝群集伺服器的信息,請參閱 Windows server 2003 產品家族的幫助和部署指南。
編輯本段創建群集
在伺服器群集產品中含有用來在伺服器上安裝群集軟體和創建新群集的群集安裝實用工具。創建新群集時,首先在選擇作為群集的第一個成員的計算機上運行該實用工具。第一步是確定群集名稱並創建群集資料庫和初始的群集成員列表來定義新群集。 Windows server 2003 群集新增了一個群集管理設置向導以及使用 cluster.exe 命令行界面創建( 包括從遠程創建 )群集的功能。創建群集的第二步是,添加可供所有群集成員使用的共用數據存儲設備。這樣,創建的新群集將帶有一個節點、自己的本地數據存儲設備以及群集共用資源 —— 通常是磁碟或數據存儲和連接介質資源。創建群集的最後一步是,在另外將要成為群集成員的每一台計算機上運行安裝實用工具。每當將新節點添加到群集中時,新節點都會自動從群集的原始成員獲得現有群集資料庫的副本。當節點加入或形成群集時,群集服務會更新該節點私有的配置資料庫副本。
編輯本段形成群集
如果伺服器運行了群集服務並且無法找到群集中的其它節點,它自己可以形成一個群集。要形成群集,節點必須能夠獲得對仲裁資源的獨占權。當最初形成群集時,群集中的第一個節點將包括群集配置資料庫。每當有新節點加入群集時,新節點都會在本地獲得並保持群集配置資料庫的副本。仲裁資源用恢復日誌(其中含有同節點無關的群集配置和狀態數據)的形式存儲配置資料庫的最新版本。在群集運行中,群集服務使用仲裁恢復日誌執行以下操作 :保證只有一組活動、可相互通訊的節點才能形成群集僅當某個節點可以獲得對仲裁資源的控制權時 , 才允許它形成群集僅當某個節點可以同控制仲裁資源的節點通訊時 , 才允許它加入或留在現有群集中從群集中的其它節點和群集服務管理介面的角度看,當形成群集時,群集中的每個節點可能處於三種不同狀態中的一種。事件處理器會記錄這些狀態,而事件日誌管理器會將這些狀態復制到群集的其它節點。群集服務狀態包括:離線。此時的節點不是完全有效的群集成員。該節點及其群集伺服器可能在運行,也可能未運行。聯機。此時的節點是完全有效的群集成員。它遵從群集資料庫的更新、對仲裁演算法施加自己的影響、維護心跳通訊,並可以擁有和運行資源組。暫停。此時的節點是完全有效的群集成員。它遵從群集資料庫的更新、對仲裁演算法施加自己的影響、維護心跳通訊,但它無法接受資源組。它只能支持它當前已擁有的那些資源組。之所以提供暫停狀態,是為了允許執行某些維護。大多數伺服器群集組件會將聯機和暫停視為等價的狀態。
編輯本段優勢
一、集群系統可解決所有的伺服器硬體故障,當某一台伺服器出現任何故障,如:硬碟、內存、CPU、主板、I/O板以及電源故障,運行在這台伺服器上的應用就會切換到其它的伺服器上。二、集群系統可解決軟體系統問題,我們知道,在計算機系統中,用戶所使用的是應用程序和數據,而應用系統運行在操作系統之上,操作系統又運行在伺服器上。這樣,只要應用系統、操作系統、伺服器三者中的任何一個出現故障,系統實際上就停止了向客戶端提供服務,比如我們常見的軟體死機,就是這種情況之一,盡管伺服器硬體完好,但伺服器仍舊不能向客戶端提供服務。而集群的最大優勢在於對故障伺服器的監控是基於應用的,也就是說,只要伺服器的應用停止運行,其它的相關伺服器就會接管這個應用,而不必理會應用停止運行的原因是什麼。三、集群系統可以解決人為失誤造成的應用系統停止工作的情況,例如,當管理員對某台伺服器操作不當導致該伺服器停機,因此運行在這台伺服器上的應用系統也就停止了運行。由於集群是對應用進行監控,因此其它的相關伺服器就會接管這個應用。
編輯本段缺點
我們知道集群中的應用只在一台伺服器上運行,如果這個應用出現故障,其它的某台伺服器會重新啟動這個應用,接管位於共享磁碟櫃上的數據區,進而使應用重新正常運轉。我們知道整個應用的接管過程大體需要三個步驟:偵測並確認故障、後備伺服器重新啟動該應用、接管共享的數據區。因此在切換的過程中需要花費一定的時間,原則上根據應用的大小不同切換的時間也會不同,越大的應用切換的時間越長。
編輯本段加入群集
如果一個伺服器要加入現有群集 , 則它必須運行群集服務並且必須成功找到群集中的其它節點。在找到其它節點後,加入的伺服器必須接受群集成員資格驗證,並獲得群集配置資料庫的副本。加入現有群集的過程開始於 Windows Server 2003 或 Windows 2000 Service Control Manager 在節點上啟動群集服務之時。在啟動過程中,群集服務會配置並裝入該節點的本地數據設備。它並不會試圖將共用的群集數據設備作為節點聯機,因為現有群集可能正在使用這些設備。為了查找其它節點 , 會啟動一個發現過程。當節點發現任何群集成員時,它將執行身份驗證序列。第一個群集成員會對新加入者進行身份驗證,並且在新伺服器得到成功驗證後返回成功狀態。如果驗證不成功(未能識別待加入節點的群集成員身份,或者它使用了無效的帳戶密碼),則加入群集的請求會被拒絕。進行成功驗證後,首先聯機的群集節點會檢查加入節點上的配置資料庫副本。如果該副本已過時,對加入伺服器進行驗證的群集節點會為加入的伺服器發送該資料庫的更新副本。剛加入群集的節點在收到復制的資料庫後,可以用它查找共享資源並根據需要將它們聯機。
編輯本段脫離群集
當節點關閉或群集服務被停止時,節點可能脫離群集。但當節點不執行群集操作(比如不向群集配置資料庫提交更新)時,節點也可能被迫脫離(被逐出)群集。如果節點根據預先的計劃脫離群集 , 它會向其它所有節點成員發送 ClusterExit 消息,通知它們它將脫離群集。該節點不等待任何響應就會立即進行關閉資源和所有群集連接的操作。由於其餘節點收到了退出消息,因此它們不會執行在節點意外失效或網路通訊停止時發生的重新分組過程以重新確立群集成員身份。
編輯本段方法
有兩種常用的伺服器集群方法,一種是將備份伺服器連接在主伺服器上,當主伺服器發生故障時,備份伺服器才投入運行,把主伺服器上所有任務接管過來。另一種方法是將多台伺服器連接,這些伺服器一起分擔同樣的應用和資料庫計算任務,改善關鍵大型應用的響應時間。同時,每台伺服器還承擔一些容錯任務,一旦某台伺服器出現故障時,系統可以在系統軟體的支持下,將這台伺服器與系統隔離,並通過各伺服器的負載轉嫁機制完成新的負載分配。PC伺服器中較為常見的是兩台伺服器的集群,UNIX系統可支持8台伺服器的集群系統,康柏的專用系統OpenVMS可支持多達96台伺服器的集群系統。在集群系統中,所有的計算機擁有一個共同的名稱,集群內任一系統上運行的服務可被所有的網路客戶所使用。集群必須可以協調管理各分離組件的錯誤和失敗,並可透明的向集群中加入組件。用戶的公共數據被放置到了共享的磁碟櫃中,應用程序被安裝到了所有的伺服器上,也就是說,在集群上運行的應用需要在所有的伺服器上安裝一遍。當集群系統在正常運轉時,應用只在一台伺服器上運行,並且只有這台伺服器才能操縱該應用在共享磁碟櫃上的數據區,其它的伺服器監控這台伺服器,只要這台伺服器上的應用停止運行(無論是硬體損壞、操作系統死機、應用軟體故障,還是人為誤操作造成的應用停止運行),其它的伺服器就會接管這台伺服器所運行的應用,並將共享磁碟櫃上的相應數據區接管過來。其接管過程如下圖所示(以應用A為例):1.應用A正常工作時;2.應用A停止工作後,其它的備用伺服器將該應用接管過來。 具體接管過程分三部執行: a.系統接管 b.載入應用 c.客戶端連接
7、C-JDBC能集群SQL嗎
使用 C-JDBC 給 Mysql 集群
一、前言
cjdbc 是一個open source的資料庫集群中間件,任何基於jdbc的應用都可以通過它透明地訪問資料庫集群,它可以進行各個節點之間的數據復制,並且可以實現各個節點的查詢負載均衡。通過這樣的軟體,偶們可以方便的實現RAIDb - Rendant Array of Inexpensive Database 廉價資料庫冗餘陣列。
大型應用隨著用戶量訪問越來越大,增加資料庫存儲和做好資料庫冗餘可以增加系統的可靠性和性能。
下面利用cjdbc,把兩台對等的 Mysql 做 RAIDb,本文假定你已經搭建好兩台對等的 Mysql環境並建好一個需要做集群冗餘的資料庫 clusterdb。
二、配置環境
Mysql: 5.0.19, 並使用 InnoDB 作為 Mysql 引擎
C-jdbc: 2.0.2
Jdk: 1.5
三、選擇合適的 C-JDBC RAIDb 機制
cjdbc有幾種RAIDb的機制可以選擇,如RAIDb-0,RAIDb-1等等,可以根據不同的情況選擇不同的RAIDb的機制。各種 RAIDb的機制詳情請查看 cjdbc 的文檔和 Demo。
RAIDb-1有如下功能:
完全鏡像處理機制,每個節點上都有完整的資料庫結構,這種方式提供了最好的容錯處理,並且通過設置合理的Loading Balance策略,可以帶來查詢性能相當好的提高。但是由於對於任何的寫操作(create/update/delete),需要在各個節點上進行傳播復制,寫操作就會比原來慢一些了,如下圖:
這里選擇 RAIDb-1 做為 cjdbc RAIDb 機制。
四、給兩台對等的 Mysql 建表,假設兩台 Mysql 的IP分別是 192.168.0.2和192.168.0.3
bash> mysql -h192.168.0.2 -uroot
bash> use clusterdb
bash> create table user (id int(3) not null auto_increment primary key, name char(50) not null) engine innodb;
bash> exit;
bash> mysql -h192.168.0.3 -uroot
bash> use clusterdb
bash> create table user (id int(3) not null auto_increment primary key, name char(50) not null) engine innodb;
bash> exit;
五、在 Linux 下安裝 C-JDBC Controller
bash> mkdir -p /usr/local/c-jdbc
bash> cd /usr/local/c-jdbc
bash> tar xvfz c-jdbc-2.0.2-bin.tar.gz
bash> export CJDBC_HOME=/usr/local/c-jdbc
六、把 Mysql JDBC Driver 放到 C-JDBC Controller 中來
這里我們使用 mysql-connector-java-3.1.12-bin.jar 驅動程序,把它放到
/usr/local/c-jdbc/drivers 中
七、配置 C-JDBC Controller
1、在 /usr/local/c-jdbc/config/virtualdatabase 目錄中創建 虛擬資料庫配置文件,並把它命名為 mysql-raidb1-distribution.xml,內容如下:
<?xml version="1.0" encoding="UTF8"?>
<!DOCTYPE C-JDBC PUBLIC "-//ObjectWeb//DTD C-JDBC 2.0.2//EN" "http://c-jdbc.objectweb.org/dtds/c-jdbc-2.0.2.dtd">
<C-JDBC>
<VirtualDatabase name="myDB">
<Distribution>
</Distribution>
<AuthenticationManager>
<Admin>
<User username="admin" password="c-jdbc"/>
</Admin>
<VirtualUsers>
<VirtualLogin vLogin="boss" vPassword="boss"/>
</VirtualUsers>
</AuthenticationManager>
<DatabaseBackend name="mysqlNode211" driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://192.168.0.2/clusterdb" connectionTestStatement="select 1">
<ConnectionManager vLogin="boss" rLogin="boss_user" rPassword="123456">
<VariablePoolConnectionManager initPoolSize="10" minPoolSize="10" maxPoolSize="50" idleTimeout="30" waitTimeout="10"/>
</ConnectionManager>
</DatabaseBackend>
<DatabaseBackend name="mysqlNode213" driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://192.168.0.3/clusterdb" connectionTestStatement="select 1">
<ConnectionManager vLogin="boss" rLogin="boss_user" rPassword="123456">
<VariablePoolConnectionManager initPoolSize="10" minPoolSize="10" maxPoolSize="50" idleTimeout="30" waitTimeout="10"/>
</ConnectionManager>
</DatabaseBackend>
<RequestManager>
<RequestScheler>
<RAIDb-1Scheler level="passThrough"/>
</RequestScheler>
<LoadBalancer>
<RAIDb-1>
<WaitForCompletion policy="first"/>
<RAIDb-1-LeastPendingRequestsFirst/>
</RAIDb-1>
</LoadBalancer>
</RequestManager>
</VirtualDatabase>
</C-JDBC>
2、在 /usr/local/c-jdbc/config/controller 目錄中創建 C-JDBC controller 配置文件,並把它命名為 uud-controller-distributed.xml,內容如下:
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE C-JDBC-CONTROLLER PUBLIC "-//ObjectWeb//DTD C-JDBC-CONTROLLER 2.0.2//EN" "http://c-jdbc.objectweb.org/dtds/c-jdbc-controller-2.0.2.dtd">
<C-JDBC-CONTROLLER>
<Controller port="25323">
<JmxSettings>
<RmiJmxAdaptor port="1091"/>
</JmxSettings>
<VirtualDatabase configFile="mysql-raidb1-distribution.xml" virtualDatabaseName="myDB" autoEnableBackends="true"/>
</Controller>
</C-JDBC-CONTROLLER>
3、在 /usr/local/c-jdbc/config/demo 目錄中創建啟動 C-JDBC controller sh,並把它命名為 uud-distributed-raidb1-controller.sh,內容如下:
#!/bin/sh
export CJDBC_HOME=/usr/local/c-jdbc
export JAVA_HOME=/opt/jdk1.5
cd $CJDBC_HOME/bin
echo "Waiting for mysql servers to finish start up"
echo "Starting Controller"
./controller.sh -f ../config/controller/uud-controller-distributed.xml &
八、啟動 C-JDBC Controller
bash> cd /usr/local/c-jdbc/demo
bash> chmod u+rwx uud-distributed-raidb1-controller.sh
bash> ./uud-distributed-raidb1-controller.sh &
如果啟動正常,顯示的信息如下:
Waiting for mysql servers to finish start up
Starting Controller
2006-04-20 10:32:21,126 INFO controller.core.Controller C-JDBC controller (2.0.2)
2006-04-20 10:32:21,189 INFO controller.core.Controller Loading configuration file: ../config/controller/uud-controller-distributed.xml
2006-04-20 10:32:21,278 INFO controller.core.Controller JMX is enabled
2006-04-20 10:32:21,308 INFO controller.core.Controller Starting JMX server on host: 127.0.0.1
2006-04-20 10:32:21,674 INFO backend.DatabaseBackend.mysqlNode211 Adding connection manager for virtual user "boss"
2006-04-20 10:32:21,749 INFO backend.DatabaseBackend.mysqlNode213 Adding connection manager for virtual user "boss"
2006-04-20 10:32:21,809 INFO controller.RequestManager.myDB Request manager will parse requests with the following granularity: NO_PARSING
2006-04-20 10:32:21,814 INFO controller.virtualdatabase.myDB Configuring jgroups using: file:/usr/local/c-jdbc/config/jgroups.xml
-------------------------------------------------------
GMS: address is 127.0.0.1:32773
-------------------------------------------------------
2006-04-20 10:32:26,476 INFO controller.virtualdatabase.myDB Group myDB connected to /127.0.0.1:32773[/127.0.0.1:32773]
2006-04-20 10:32:26,476 INFO controller.virtualdatabase.myDB First controller in group myDB
2006-04-20 10:32:26,477 WARN controller.virtualdatabase.myDB No recovery log has been configured, enabling backend without checkpoint.
[1]+ Done ./uud-distributed-raidb1-controller.sh
八、編寫 C-JDBC 客戶端程序
1、把 C-JDBC Drivers(/usr/local/c-jdbc/drivers/c-jdbc-driver.jar) 放置到 CLASSPATH 中
2、編寫插入 10 條數據到 Mysql 中,程序如下:
/**
* @author 胡榮華
* @Company 世紀龍 21cn
*/
package com.cjdbc.test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.DriverManager;
/**
*
*/
public class GenerateSampleData {
public void generate() {
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 這是 c-jdbc drivers 的 Drivers class,注意不是 mysql 的 Drivers class
Class.forName("org.objectweb.cjdbc.driver.Driver").newInstance();
// 192.168.0.1 是 cjdbc controller 所在的 ip
// myDB 是在 文件 mysql-raidb1-distribution.xml 里定義的 <VirtualDatabase name="myDB">
// user=boss&password=boss 是在 文件 mysql-raidb1-distribution.xml 里定義的
// <VirtualUsers>
// <VirtualLogin vLogin="boss" vPassword="boss"/>
// </VirtualUsers>
String url = "jdbc:cjdbc://192.168.0.1:25323/myDB?user=boss&password=boss";
conn = DriverManager.getConnection(url);
try{
conn.setAutoCommit(false);
pstmt = conn.prepareStatement("insert into user values ('', ?)");
int numOfTestRecords = 10;
System.out.println("Update Record Start.");
for (int i=0;i<numOfTestRecords;i++) {
String newkey = i + "-" + i;
pstmt.setString(1, "hua_" + newkey);
pstmt.executeUpdate();
}
conn.commit();
System.out.println("Update Record Success.");
}
catch(Exception ex){
conn.rollback();
ex.printStackTrace();
}
finally{
try {
if( pstmt != null )
pstmt.close();
if( conn != null)
conn.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
GenerateSampleData g = new GenerateSampleData();
g.generate();
}
}
3、程序執行完畢後,分別到 Mysql Node 192.168.0.2 和 192.168.0.3 查詢,看看是否已同步了數據,如果兩個 Mysql Node 都有相同的數據,說明 C-JDBC 環境搭建成功。
8、什麼是資料庫集群?
現在比較大型點的系統基本上是AP+DB的架構: AP指應用程序,DB指資料庫端
AP放在一個伺服器專上,DB放在另一屬個伺服器上
當一個系統比較大,訪問的用戶數量比較多的時候,比如QQ,上億用戶.
這時一個伺服器就吃不消了,這樣就想到多個伺服器跑同一個AP應用.
DB端也一樣.
linux集群 指的就是多個伺服器跑同一個AP應用,系統管理員的工作
資料庫集群 指的就是多個伺服器跑同一個DB資料庫.資料庫管理員的工作
linux集群基礎就要熟悉linux系統.
資料庫集群基礎就要熟悉具體的資料庫如oracle,db2,sysbase.mysql.等
0基礎可以學,只是要花時間.0基礎想搞到集群估計得花3個月時間.這還是要有環境的,有人指導才行.
9、「分布式」與「集群」的區別是什麼?
簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。
例如:
如果一個任務由10個子任務組成,每個子任務單獨執行需1小時,則在一台伺服器上執行改任務需10小時。
採用分布式方案,提供10台伺服器,每台伺服器只負責處理一個子任務,不考慮子任務間的依賴關系,執行完這個任務只需一個小時。(這種工作模式的一個典型代表就是Hadoop的Map/Rece分布式計算模型)
而採用集群方案,同樣提供10台伺服器,每台伺服器都能獨立處理這個任務。假設有10個任務同時到達,10個伺服器將同時工作,10小後,10個任務同時完成,這樣,整身來看,還是1小時內完成一個任務!
以下是摘抄自網路文章:
一、集群概念
1. 兩大關鍵特性
集群是一組協同工作的服務實體,用以提供比單一服務實體更具擴展性與可用性的服務平台。在客戶端看來,一個集群就象是一個服務實體,但事實上集群由一組服務實體組成。與單一服務實體相比較,集群提供了以下兩個關鍵特性:
· 可擴展性--集群的性能不限於單一的服務實體,新的服務實體可以動態地加入到集群,從而增強集群的性能。
· 高可用性--集群通過服務實體冗餘使客戶端免於輕易遇到out of service的警告。在集群中,同樣的服務可以由多個服務實體提供。如果一個服務實體失敗了,另一個服務實體會接管失敗的服務實體。集群提供的從一個出 錯的服務實體恢復到另一個服務實體的功能增強了應用的可用性。
2. 兩大能力
為了具有可擴展性和高可用性特點,集群的必須具備以下兩大能力:
· 負載均衡--負載均衡能把任務比較均衡地分布到集群環境下的計算和網路資源。
· 錯誤恢復--由於某種原因,執行某個任務的資源出現故障,另一服務實體中執行同一任務的資源接著完成任務。這種由於一個實體中的資源不能工作,另一個實體中的資源透明的繼續完成任務的過程叫錯誤恢復。
負載均衡和錯誤恢復都要求各服務實體中有執行同一任務的資源存在,而且對於同一任務的各個資源來說,執行任務所需的信息視圖(信息上下文)必須是一樣的。
3. 兩大技術
實現集群務必要有以下兩大技術:
· 集群地址--集群由多個服務實體組成,集群客戶端通過訪問集群的集群地址獲取集群內部各服務實體的功能。具有單一集群地址(也叫單一影像)是集群的一個基本特徵。維護集群地址的設置被稱為負載均衡器。負載均衡器內部負責管理各個服務實體的加入和退出,外部負責集群地址向內部服務實體地址的轉換。有的負載均衡器實現真正的負載均衡演算法,有的只支持任務的轉換。只實現任務轉換的負載均衡器適用於支持ACTIVE-STANDBY的集群環境,在那裡,集群中只有一個服務實體工作,當正在工作的服務實體發生故障時,負載均衡器把後來的任務轉向另外一個服務實體。
· 內部通信--為了能協同工作、實現負載均衡和錯誤恢復,集群各實體間必須時常通信,比如負載均衡器對服務實體心跳測試信息、服務實體間任務執行上下文信息的通信。
具有同一個集群地址使得客戶端能訪問集群提供的計算服務,一個集群地址下隱藏了各個服務實體的內部地址,使得客戶要求的計算服務能在各個服務實體之間分布。內部通信是集群能正常運轉的基礎,它使得集群具有均衡負載和錯誤恢復的能力。
二、集群分類
Linux集群主要分成三大類(高可用集群, 負載均衡集群,科學計算集群)
高可用集群(High Availability Cluster)
負載均衡集群(Load Balance Cluster)
科學計算集群(High Performance Computing Cluster)
具體包括:
Linux High Availability 高可用集群
(普通兩節點雙機熱備,多節點HA集群,RAC, shared, share-nothing集群等)
Linux Load Balance 負載均衡集群
(LVS等....)
Linux High Performance Computing 高性能科學計算集群
(Beowulf 類集群....)
三、詳細介紹
1. 高可用集群(High Availability Cluster)
常見的就是2個節點做成的HA集群,有很多通俗的不科學的名稱,比如"雙機熱備","雙機互備","雙機"。
高可用集群解決的是保障用戶的應用程序持續對外提供服務的能力。 (請注意高可用集群既不是用來保護業務數據的,保護的是用戶的業務程序對外不間斷提供服務,把因軟體/硬體/人為造成的故障對業務的影響降低到最小程度)。
2. 負載均衡集群(Load Balance Cluster)
負載均衡系統:集群中所有的節點都處於活動狀態,它們分攤系統的工作負載。一般Web伺服器集群、資料庫集群和應用伺服器集群都屬於這種類型。
負載均衡集群一般用於相應網路請求的網頁伺服器,資料庫伺服器。這種集群可以在接到請求時,檢查接受請求較少,不繁忙的伺服器,並把請求轉到這些伺服器上。從檢查其他伺服器狀態這一點上看,負載均衡和容錯集群很接近,不同之處是數量上更多。
3. 科學計算集群(High Performance Computing Cluster)
高性能計算(High Perfermance Computing)集群,簡稱HPC集群。這類集群致力於提供單個計算機所不能提供的強大的計算能力。
3.1 高性能計算分類
3.1.1 高吞吐計算(High-throughput Computing)
有一類高性能計算,可以把它分成若干可以並行的子任務,而且各個子任務彼此間沒有什麼關聯。象在家搜尋外星人( SETI@HOME -- Search for Extraterrestrial Intelligence at Home )就是這一類型應用。這一項目是利用Internet上的閑置的計算資源來搜尋外星人。SETI項目的伺服器將一組數據和數據模式發給Internet上參加SETI的計算節點,計算節點在給定的數據上用給定的模式進行搜索,然後將搜索的結果發給伺服器。伺服器負責將從各個計算節點返回的數據匯集成完整的 數據。因為這種類型應用的一個共同特徵是在海量數據上搜索某些模式,所以把這類計算稱為高吞吐計算。所謂的Internet計算都屬於這一類。按照 Flynn的分類,高吞吐計算屬於SIMD(Single Instruction/Multiple Data)的范疇。
3.1.2 分布計算(Distributed Computing)
另一類計算剛好和高吞吐計算相反,它們雖然可以給分成若干並行的子任務,但是子任務間聯系很緊密,需要大量的數據交換。按照Flynn的分類,分布式的高性能計算屬於MIMD(Multiple Instruction/Multiple Data)的范疇。
四、分布式(集群)與集群的聯系與區別
分布式是指將不同的業務分布在不同的地方;而集群指的是將幾台伺服器集中在一起,實現同一業務。
分布式中的每一個節點,都可以做集群。 而集群並不一定就是分布式的。
舉例:就比如新浪網,訪問的人多了,他可以做一個群集,前面放一個響應伺服器,後面幾台伺服器完成同一業務,如果有業務訪問的時候,響應伺服器看哪台伺服器的負載不是很重,就將給哪一台去完成。
而分布式,從窄意上理解,也跟集群差不多, 但是它的組織比較鬆散,不像集群,有一個組織性,一台伺服器垮了,其它的伺服器可以頂上來。
分布式的每一個節點,都完成不同的業務,一個節點垮了,那這個業務就不可訪問了。
10、伺服器群集安全如何設置 高手進
Windows2000安全配置教程
Windows2000絕版安全配置教程:前段時間,中美網路大戰,我看了一些被黑的伺服器,發現絕大部分被黑的伺服器都是Nt/win2000的機器,真是慘不忍睹。Windows2000 真的那麼不安全么?其實,Windows2000 含有很多的安全功能和選項,如果你合理的配置它們,那麼windows 2000將會是一個很安全的操作系統。我抽空翻了一些網站,翻譯加湊數的整理了一篇checklist出來。希望對win2000管理員有些幫助。本文並沒有什麼高深的東西,所謂的清單,也並不完善,很多東西要等以後慢慢加了,希望能給管理員作一參考。
具體清單如下:
初級安全篇
1.物理安全
伺服器應該安放在安裝了監視器的隔離房間內,並且監視器要保留15天以上的攝像記錄。另外,機箱,鍵盤,電腦桌抽屜要上鎖,以確保旁人即使進入房間也無法使用電腦,鑰匙要放在另外的安全的地方。
2.停掉Guest 帳號
在計算機管理的用戶裡面把guest帳號停用掉,任何時候都不允許guest帳號登陸系統。為了保險起見,最好給guest 加一個復雜的密碼,你可以打開記事本,在裡面輸入一串包含特殊字元,數字,字母的長字元串,然後把它作為guest帳號的密碼拷進去。
3.限制不必要的用戶數量
去掉所有的plicate user 帳戶, 測試用帳戶, 共享帳號,普通部門帳號等等。用戶組策略設置相應許可權,並且經常檢查系統的帳戶,刪除已經不在使用的帳戶。這些帳戶很多時候都是黑客們入侵系統的突破口,系統的帳戶越多,黑客們得到合法用戶的許可權可能性一般也就越大。國內的nt/2000主機,如果系統帳戶超過10個,一般都能找出一兩個弱口令帳戶。我曾經發現一台主機197個帳戶中竟然有180個帳號都是弱口令帳戶。
4.創建2個管理員用帳號
雖然這點看上去和上面這點有些矛盾,但事實上是服從上面的規則的。 創建一個一般許可權帳號用來收信以及處理一些日常事物,另一個擁有Administrators 許可權的帳戶只在需要的時候使用。可以讓管理員使用 「 RunAS」 命令來執行一些需要特權才能作的一些工作,以方便管理。
5.把系統administrator帳號改名
大家都知道,windows 2000 的administrator帳號是不能被停用的,這意味著別人可以一遍又一邊的嘗試這個帳戶的密碼。把Administrator帳戶改名可以有效的防止這一點。當然,請不要使用Admin之類的名字,改了等於沒改,盡量把它偽裝成普通用戶,比如改成:guestone 。
6.創建一個陷阱帳號
什麼是陷阱帳號? Look!>創建一個名為」 Administrator」的本地帳戶,把它的許可權設置成最低,什麼事也幹不了的那種,並且加上一個超過10位的超級復雜密碼。這樣可以讓那些 Scripts s忙上一段時間了,並且可以藉此發現它們的入侵企圖。或者在它的login scripts上面做點手腳。嘿嘿,夠損!
7.把共享文件的許可權從」everyone」組改成「授權用戶」
「everyone」 在win2000中意味著任何有權進入你的網路的用戶都能夠獲得這些共享資料。任何時候都不要把共享文件的用戶設置成」everyone」組。包括列印共享,默認的屬性就是」everyone」組的,一定不要忘了改。
8.使用安全密碼
一個好的密碼對於一個網路是非常重要的,但是它是最容易被忽略的。前面的所說的也許已經可以說明這一點了。一些公司的管理員創建帳號的時候往往用公司名,計算機名,或者一些別的一猜就到的東西做用戶名,然後又把這些帳戶的密碼設置得N簡單,比如 「welcome」 「iloveyou」 「letmein」或者和用戶名相同等等。這樣的帳戶應該要求用戶首此登陸的時候更改成復雜的密碼,還要注意經常更改密碼。前些天在IRC和人討論這一問題的時候,我們給好密碼下了個定義:安全期內無法破解出來的密碼就是好密碼,也就是說,如果人家得到了你的密碼文檔,必須花43天或者更長的時間才能破解出來,而你的密碼策略是42天必須改密碼。
9.設置屏幕保護密碼
很簡單也很有必要,設置屏幕保護密碼也是防止內部人員破壞伺服器的一個屏障。注意不要使用OpenGL和一些復雜的屏幕保護程序,浪費系統資源,讓他黑屏就可以了。還有一點,所有系統用戶所使用的機器也最好加上屏幕保護密碼。
10. 使用NTFS格式分區
把伺服器的所有分區都改成NTFS格式。NTFS文件系統要比FAT,FAT32的文件系統安全得多。這點不必多說,想必大家得伺服器都已經是NTFS的了。
11.運行防毒軟體
我見過的Win2000/Nt伺服器從來沒有見到有安裝了防毒軟體的,其實這一點非常重要。一些好的殺毒軟體不僅能殺掉一些著名的病毒,還能查殺大量木馬和後門程序。這樣的話,「黑客」們使用的那些有名的木馬就毫無用武之地了。不要忘了經常升級病毒庫
12.保障備份盤的安全
一旦系統資料被破壞,備份盤將是你恢復資料的唯一途徑。備份完資料後,把備份盤防在安全的地方。千萬別把資料備份在同一台伺服器上,那樣的話,還不如不要備份。
中級安全篇:
1.利用win2000的安全配置工具來配置策略
微軟提供了一套的基於MMC(管理控制台)安全配置和分析工具,利用他們你可以很方便的配置你的伺服器以滿足你的要求。具體內容請參考微軟主頁: http://www.microsoft.com/windows2000/techinfo/howitworks/security/sctoolset.asp
2.關閉不必要的服務
windows 2000 的 Terminal Services(終端服務),IIS ,和RAS都可能給你的系統帶來安全漏洞。為了能夠在遠程方便的管理伺服器,很多機器的終端服務都是開著的,如果你的也開了,要確認你已經正確的配置了終端服務。有些惡意的程序也能以服務方式悄悄的運行。要留意伺服器上面開啟的所有服務,中期性(每天)的檢查他們。下面是C2級別安裝的默認服務:
Computer Browser service TCP/IP NetBIOS Helper
Microsoft DNS server Spooler
NTLM SSP Server
RPC Locator WINS
RPC service Workstation
Netlogon Event log
3.關閉不必要的埠
關閉埠意味著減少功能,在安全和功能上面需要你作一點決策。如果伺服器安裝在防火牆的後面,冒的險就會少些,但是,永遠不要認為你可以高枕無憂了。用埠掃描器掃描系統所開放的埠,確定開放了哪些服務是黑客入侵你的系統的第一步。\system32\drivers\etc\services 文件中有知名埠和服務的對照表可供參考。具體方法為:
網上鄰居>屬性>本地連接>屬性>internet 協議(tcp/ip)>屬性>高級>選項>tcp/ip篩選>屬性 打開tcp/ip篩選,添加需要的tcp,udp,協議即可。
4.打開審核策略
開啟安全審核是win2000最基本的入侵檢測方法。當有人嘗試對你的系統進行某些方式(如嘗試用戶密碼,改變帳戶策略,未經許可的文件訪問等等)入侵的時候,都會被安全審核記錄下來。很多的管理員在系統被入侵了幾個月都不知道,直到系統遭到破壞。下面的這些審核是必須開啟的,其他的可以根據需要增加:
策略 設置
審核系統登陸事件 成功,失敗
審核帳戶管理 成功,失敗
審核登陸事件 成功,失敗
審核對象訪問 成功
審核策略更改 成功,失敗
審核特權使用 成功,失敗
審核系統事件 成功,失敗
5.開啟密碼密碼策略
策略 設置
密碼復雜性要求 啟用
密碼長度最小值 6位
強制密碼歷史 5 次
強制密碼歷史 42 天
6.開啟帳戶策略
策略 設置
復位帳戶鎖定計數器 20分鍾
帳戶鎖定時間 20分鍾
帳戶鎖定閾值 3次
7.設定安全記錄的訪問許可權
安全記錄在默認情況下是沒有保護的,把他設置成只有Administrator和系統帳戶才有權訪問。
8.把敏感文件存放在另外的文件伺服器中
雖然現在伺服器的硬碟容量都很大,但是你還是應該考慮是否有必要把一些重要的用戶數據(文件,數據表,項目文件等)存放在另外一個安全的伺服器中,並且經常備份它們。
9.不讓系統顯示上次登陸的用戶名
默認情況下,終端服務接入伺服器時,登陸對話框中會顯示上次登陸的帳戶明,本地的登陸對話框也是一樣。這使得別人可以很容易的得到系統的一些用戶名,進而作密碼猜測。修改注冊表可以不讓對話框里顯示上次登陸的用戶名,具體是:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\DontDisplayLastUserName
把 REG_SZ 的鍵值改成 1 .
10.禁止建立空連接
默認情況下,任何用戶通過通過空連接連上伺服器,進而枚舉出帳號,猜測密碼。我們可以通過修改注冊表來禁止建立空連接:
Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 的值改成」1」即可。
10.到微軟網站下載最新的補丁程序
很多網路管理員沒有訪問安全站點的習慣,以至於一些漏洞都出了很久了,還放著伺服器的漏洞不補給人家當靶子用。誰也不敢保證數百萬行以上代碼的2000不出一點安全漏洞,經常訪問微軟和一些安全站點,下載最新的service pack和漏洞補丁,是保障伺服器長久安全的唯一方法。
高級篇
1. 關閉 DirectDraw
這是C2級安全標准對視頻卡和內存的要求。關閉DirectDraw可能對一些需要用到DirectX的程序有影響(比如游戲,在伺服器上玩星際爭霸?我暈..$%$^%^&??),但是對於絕大多數的商業站點都應該是沒有影響的。 修改注冊表 HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\DCI 的Timeout(REG_DWORD)為 0 即可。
2.關閉默認共享
win2000安裝好以後,系統會創建一些隱藏的共享,你可以在cmd下打 net share 查看他們。網上有很多關於IPC入侵的文章,相信大家一定對它不陌生。要禁止這些共享 ,打開 管理工具>計算機管理>共享文件夾>共享 在相應的共享文件夾上按右鍵,點停止共享即可,不過機器重新啟動後,這些共享又會重新開啟的。
默認共享目錄 路徑和功能
C$ D$ E$ 每個分區的根目錄。Win2000 Pro版中,只有Administrator
和Backup Operators組成員才可連接,Win2000 Server版本
Server Operatros組也可以連接到這些共享目錄
ADMIN$ %SYSTEMROOT% 遠程管理用的共享目錄。它的路徑永遠都
指向Win2000的安裝路徑,比如 c:\winnt
FAX$ 在Win2000 Server中,FAX$在fax客戶端發傳真的時候會到。
IPC$ 空連接。IPC$共享提供了登錄到系統的能力。
NetLogon 這個共享在Windows 2000 伺服器的Net Login 服務在處
理登陸域請求時用到
PRINT$ %SYSTEMROOT%\SYSTEM32\SPOOL\DRIVERS 用戶遠程管理列印機
3.禁止mp file的產生
mp文件在系統崩潰和藍屏的時候是一份很有用的查找問題的資料(不然我就照字面意思翻譯成垃圾文件了)。然而,它也能夠給黑客提供一些敏感信息比如一些應用程序的密碼等。要禁止它,打開 控制面板>系統屬性>高級>啟動和故障恢復 把 寫入調試信息 改成無。要用的時候,可以再重新打開它。
4.使用文件加密系統EFS
Windows2000 強大的加密系統能夠給磁碟,文件夾,文件加上一層安全保護。這樣可以防止別人把你的硬碟掛到別的機器上以讀出裡面的數據。記住要給文件夾也使用EFS,而不僅僅是單個的文件。 有關EFS的具體信息可以查看 http://www.microsoft.com/windows2000/techinfo/howitworks/security/encrypt.asp
5.加密temp文件夾
一些應用程序在安裝和升級的時候,會把一些東西拷貝到temp文件夾,但是當程序升級完畢或關閉的時候,它們並不會自己清除temp文件夾的內容。所以,給temp文件夾加密可以給你的文件多一層保護。
6.鎖住注冊表
在windows2000中,只有administrators和Backup Operators才有從網路上訪問注冊表的許可權。如果你覺得還不夠的話,可以進一步設定注冊表訪問許可權,詳細信息請參考: http://support.microsoft.com/support/kb/articles/Q153/1/83.asp
7.關機時清除掉頁面文件
頁面文件也就是調度文件,是win2000用來存儲沒有裝入內存的程序和數據文件部分的隱藏文件。一些第三方的程序可以把一些沒有的加密的密碼存在內存中,頁面文件中也可能含有另外一些敏感的資料。 要在關機的時候清楚頁面文件,可以編輯注冊表
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
把ClearPageFileAtShutdown的值設置成1。
8.禁止從軟盤和CD Rom啟動系統
一些第三方的工具能通過引導系統來繞過原有的安全機制。如果你的伺服器對安全要求非常高,可以考慮使用可移動軟盤和光碟機。把機箱鎖起來扔不失為一個好方法。www.jz5u.com
9.考慮使用智能卡來代替密碼
對於密碼,總是使安全管理員進退兩難,容易受到 10phtcrack 等工具的攻擊,如果密碼太復雜,用戶把為了記住密碼,會把密碼到處亂寫。如果條件允許,用智能卡來代替復雜的密碼是一個很好的解決方法。
10.考慮使用IPSec
正如其名字的含義,IPSec 提供 IP 數據包的安全性。IPSec 提供身份驗證、完整性和可選擇的機密性。發送方計算機在傳輸之前加密數據,而接收方計算機在收到數據之後解密數據。利用IPSec可以使得系統的安全性能大大增強。