本文目錄一覽:
- 1、keepalived怎麼重新加載配置文件
- 2、連接內網服務器上的mysql報錯
- 3、MySQL的root密碼忘記怎麼辦 修改root密碼的方式
- 4、如何指定 /etc/init.d/mysqld 所加載的配置文件
keepalived怎麼重新加載配置文件
keepalived.conf內容說明如下
●全局定義塊
1、email通知。作用:有故障,發郵件報警。
2、Lvs負載均衡器標識(lvs_id)。在一個網絡內,它應該是唯一的。
3、花括號“{}”。用來分隔定義塊,因此必須成對出現。如果寫漏了,keepalived運行時,不會得到預期的結果。由於定義塊內存在嵌套關係,因此很容易遺漏結尾處的花括號,這點要特別注意。
●VRRP定義塊
1、同步vrrp組vrrp_sync_group。作用:確定失敗切換(FailOver)包含的路由實例個數。即在有2個負載均衡器的場景,一旦某個負載均衡器失效,需要自動切換到另外一個負載均衡器的實例是哪些?
2、實例組group。至少包含一個vrrp實例。
3、Vrrp實例vrrp_instance。實例名出自實例組group所包含的那些名字。
(1) 實例狀態state。只有MASTER和BACKUP兩種狀態,並且需要大寫這些單詞。其中MASTER為工作狀態,BACKUP為備用狀態。當 MASTER所在的服務器失效時,BACKUP所在的系統會自動把它的狀態有BACKUP變換成MASTER;當失效的MASTER所在的系統恢復 時,BACKUP從MASTER恢復到BACKUP狀態。
(2)通信接口interface。對外提供服務的網絡接口,如eth0,eth1.當前主流的服務器都有2個或2個以上的接口,在選擇服務接口時,一定要核實清楚。
(3)lvs_sync_daemon_inteface。 負載均衡器之間的監控接口,類似於HA HeartBeat的心跳線。但它的機制優於Heartbeat,因為它沒有“裂腦”這個問題,它是以優先級這個 機制來規避這個麻煩的。在DR模式中,lvs_sync_daemon_inteface 與服務接口interface 使用同一個網絡接口。
(4)虛擬路由標識virtual_router_id。這個標識是一個數字,並且同一個vrrp實例使用唯一的標識。即同一個vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的,同時在整個vrrp內是唯一的。
(5)優先級priority。這是一個數字,數值愈大,優先級越高。在同一個vrrp_instance里,MASTER 的優先級高於BACKUP。若MASTER的priority值為150,那麼BACKUP的priority只能是140或更小的數值。
(6)同步通知間隔advert_int。MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位為秒。
(7)驗證authentication。包含驗證類型和驗證密碼。類型主要有PASS、AH兩種,通常使用的類型為PASS,據說AH使用時有問題。驗證密碼為明文,同一vrrp實例MASTER與BACKUP 使用相同的密碼才能正常通信。
4、 虛擬ip地址virtual_ipaddress。可以有多個地址,每個地址佔一行,不需要指定子網掩碼。注意:這個ip必須與我們在lvs客戶端設定的vip相一致!
●虛擬服務器virtual_server定義塊
虛擬服務器定義是keepalived框架最重要的項目了,是keepalived.conf必不可少的部分。
1、虛擬服務器virtual_server。這個ip來自於vrrp定義塊的第“4”步,後面一個空格,然後加上端口號。定義一個vip,可以實現多個tcp端口的負載均衡功能。
(1)delay_loop。健康檢查時間間隔,單位是秒。
(2)lb_algo。負載均衡調度算法,互聯網應用常使用wlc或rr。
(3)lb_kind。負載均衡轉發規則。一般包括DR、NAT、TUN3種,在我的方案中,都使用DR的方式。
(4)persistence_timeout。 會話保持時間,單位是秒。這個選項對動態網站很有用處:當用戶從遠程用帳號進行登陸網站時,有了這個會話保持功能,就能把用戶的請求轉發給同一個應用服務 器。在這裡,我們來做一個假設,假定現在有一個lvs 環境,使用DR轉發模式,真實服務器有3個, 負載均衡器不啟用會話保持功能。當用戶第一次訪問的時候,他的訪問請求被負載均衡器轉給某個真實服務器,這樣他看到一個登陸頁面,第一次訪問完畢;接着他 在登陸框填寫用戶名和密碼,然後提交;這時候,問題就可能出現了—登陸不能成功。因為沒有會話保持,負載均衡器可能會把第2次的請求轉發到其他的服務器。
(5)轉發協議protocol。一般有tcp和udp兩種。實話說,我還沒嘗試過udp協議類的轉發。
2、真實服務器real_server,也即服務器池。Real_server的值包括ip地址和端口號,多個連續的真實ip。
(1)權重weight,權重值是一個數字,數值越大,權重越高。使用不同的權重值的目的在於為不同性能的機器分配不同的負載,性能較好的機器,負載分擔大些;反之,性能差的機器,則分擔較少的負載,這樣就可以合理的利用不同性能的機器資源。
(2)Tcp檢查tcp_check。
第③版更新內容如下:
每台服務器都有二塊網卡,分別連接內外網;後端的mysql數據庫與web連接採用內網方式,整個網絡環境採用內網;
增加了keepalived.conf語法內容;
刪除了lvs.sh腳本內容,直接讓keepalived內容更直接明了;
lvs主從機上的keepalived.conf文件我直接從生產服務器上download下來了,可方便大家使用。
※值得注意的是:
1、你必須向你的服務器所在機房IDC多申請一個IP供VIP使用;多關注/var/log/messages和ipvsadm -ln,利用其有效信息排錯。
2、服務器的iptables、Selinux均關閉;在生產環境中,我就遇到了iptables的NAT轉發問題,導致了lvs失敗。
3、 keepalived的啟動過程並不會對配置文件進行語法檢查,就算沒有配置文件,keepalived的守護進程照樣能夠被運行起來。在默認狀態下,即 不指定配置文件的位置–keepalived先查找文件/etc/keepalived/keepalived.conf。
4、session的過程默認是以文件的形式存在,在瀏覽器關閉或重啟時刪除;會話保持我建議寫成120秒,如果這個值設置得不合理,用戶將得到非常糟糕的訪問效果。
5、 keepalived是lvs的擴展項目,因此它們之間具備良好的兼容性,這點應該是keepalived部署比其他類似工具能更簡潔的原因 吧,lvs+keepalived目前是一個應用於生產環境的成熟架構,實現了真正意義上的負載均衡高可用,尤其適用於bbs和blog(它們均是訪問頻 繁,用戶量大的對象),建議熟練掌握。
LVS 算法說明
LVS的常見八種調度算法:
一:輪叫調度(Round-Robin Scheduling)
輪叫調度(Round Robin Scheduling)算法就是以輪叫的方式依次將請求調度不同的服務器,即每次調度執行i = (i + 1) mod n,並選出第i台服務器。算法的優點是其簡潔性,它無需記錄當前所有連接的狀態,所以它是一種無狀態調度。
二:加權輪叫調度(Weighted Round-Robin Scheduling)
加權輪叫調度 (Weighted Round-Robin Scheduling)算法可以解決服務器間性能不一的情況,它用相應的權值表示服務器的處理性能,服務器的缺省權值為1。假設服務器A的權值為1,B的權值為2,則表示服務器B的處理性能是A的兩倍。加權輪叫調度算法是按權值的高低和輪叫方式分配請求到各服務器。權值高的服務器先收到的連接,權值高的服務器比權值低的服務器處理更多的連接,相同權值的服務器處理相同數目的連接數。
三:最小連接調度(Least-Connection Scheduling)
最 小連接調度(Least- Connection Scheduling)算法是把新的連接請求分配到當前連接數最小的服務器。最小連接調度是一種動態調 度算法,它通過服務器當前所活躍的連接數來估計服務器的負載情況。調度器需要記錄各個服務器已建立連接的數目,當一個請求被調度到某台服務器,其連接數加1;當連接中止或超時,其連接數減一。
四:加權最小連接調度(Weighted Least-Connection Scheduling)
加權最小連接調 度(Weighted Least-Connection Scheduling)算法是最小連接調度的超集,各個服務器用相應的權值表示其處理性能。服務器的缺省權值為1,系統管理員可以動態地設置服務器的權值。加權最小連接調度在調度新連接時儘可能使服務器的已建立連接數和其權值成比例。
五:基於局部性的最少鏈接(Locality-Based Least Connections Scheduling)
基 於局部性的最少鏈接調度(Locality-Based Least Connections Scheduling,以下簡稱為LBLC)算法是針對請 求報文的目標IP地址的負載均衡調度,目前主要用於Cache集群系統,因為在Cache集群中客戶請求報文的目標IP地址是變化的。這裡假設任何後端服 務器都可以處理任一請求,算法的設計目標是在服務器的負載基本平衡情況下,將相同目標IP地址的請求調度到同一台服務器,來提高各台服務器的訪問局部性和 主存Cache命中率,從而整個集群系統的處理能力。LBLC調度算法先根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的 且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於其一半的工作負載,則用“最少鏈接”的原則選出一個可用的服務器,將 請求發送到該服務器。
六: 帶複製的基於局部性最少鏈接(Locality-Based Least Connections with Replication Scheduling)
帶 複製的基於局部性最少鏈接調度(Locality- Based Least Connections with Replication Scheduling,以下簡稱為LBLCR)算法也是針對目標 IP地址的負載均衡,目前主要用於Cache集群系統。它與LBLC算法的不同之處是它要維護從一個目標IP地址到一組服務器的映射,而LBLC算法維護 從一個目標IP地址到一台服務器的映射。對於一個“熱門”站點的服務請求,一台Cache 服務器可能會忙不過來處理這些請求。這時,LBLC調度算法會 從所有的Cache服務器中按“最小連接”原則選出一台Cache服務器,映射該“熱門”站點到這台Cache服務器,很快這台Cache服務器也會超 載,就會重複上述過程選出新的Cache服務器。這樣,可能會導致該“熱門”站點的映像會出現在所有的Cache服務器上,降低了Cache服務器的使用 效率。LBLCR調度算法將“熱門”站點映射到一組Cache服務器(服務器集合),當該“熱門”站點的請求負載增加時,會增加集合里的Cache服務 器,來處理不斷增長的負載;當該“熱門”站點的請求負載降低時,會減少集合里的Cache服務器數目。這樣,該“熱門”站點的映像不太可能出現在所有的 Cache服務器上,從而提供Cache集群系統的使用效率。LBLCR算法先根據請求的目標IP 地址找出該目標IP地址對應的服務器組;按“最小連 接”原則從該服務器組中選出一台服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載;則按 “最小連接”原則從整個集群中選出一台服務器,將 該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低複製的程度。
七:目標地址散列調度(Destination Hashing Scheduling)
目 標地址散列調度 (Destination Hashing Scheduling)算法也是針對目標IP地址的負載均衡,但它是一種靜態映射算法,通過 一個散列(Hash)函數將一個目標IP地址映射到一台服務器。目標地址散列調度算法先根據請求的目標IP地址,作為散列鍵(Hash Key)從靜態分 配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。
八:源地址散列調度(Source Hashing Scheduling)
源 地址散列調度(Source Hashing Scheduling)算法正好與目標地址散列調度算法相反,它根據請求的源IP地址,作為散列鍵 (Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。它採用的散列函數與目標地址 散列調度算法的相同。它的算法流程與目標地址散列調度算法的基本相似,除了將請求的目標IP地址換成請求的源IP地址,所以這裡不一一敘述。在實際應用 中,源地址散列調度和目標地址散列調度可以結合使用在防火牆集群中,它們可以保證整個系統的唯一出入口。
此文出處撫琴煮酒之百度博客
連接內網服務器上的mysql報錯
錯誤原因是:本地IP(xxx.xxx.xxx.xxx)沒有訪問遠程數據庫的權限。
於是下面開啟本地IP(xxx.xxx.xxx.xxx)對遠程mysql數據庫的訪問權限。
首先遠程連接進入服務器,在cms中輸入mysql -u root -p,然後回車,輸入密碼後回車進入mysql命令行。
輸入use mysql;
輸入select user,password,host from user;
可以看到host中只有localhost主機。我們需要將xxx.xxx.xxx.xxx也添加到這裡才對。
添加方法如下:
輸入
grant all privileges on *.* to root@”xxx.xxx.xxx.xxx” identified by “密碼”;
這相當於是給IP-xxx.xxx.xxx.xxx賦予了所有的權限,包括遠程訪問權限。
然後再輸入
flush privileges;
這相當於是重新加載一下mysql權限,這一步必須有。
再次輸入select user,password,host from user;
可以看到host中已經有了新加的IP。
現在再次用Navicat for MySQl訪問遠程mysql數據庫,已經能正常打開了。
問題解決。
不過還有一個問題,發現雙擊打開某張表的時候很慢,至少要3秒。
原因是:
當遠程訪問mysql時, mysql會解析域名, 所以會導致訪問速度很慢, 會有2,3秒延時!
解決辦法:
修改mysql安裝目錄下的my.ini,加上下面這個配置可解決此問題。在[mysqld]下加入:skip-name-resolve
保存退出後重啟mysql服務。
然後訪問速度就和本地一樣快啦。
MySQL的root密碼忘記怎麼辦 修改root密碼的方式
如果哪天你忘記了線上MySQL數據庫的root密碼,怎麼辦?
大家往往會想到skip-grant-tables參數,具體步驟如下:
1.
關閉MySQL數據庫,因為root密碼忘記了,mysqladmin無法使用,此時,只能通過kill
pid關閉程序。
在這裡,科普一下kill
和kill
-9的區別
默認參數下,kill
發送SIGTERM信號給進程,告訴進程,你需要被關閉,請自行停止運行並退出。
kill
-9
發送SIGKILL信號給進程,告訴進程,你被終結了,請立刻退出。與SIGTERM相比,這個信號不能被捕獲或忽略,同時接收這個信號的進程在收到這個信號時不能執行任何清理
所以,萬不得已,不要通過kill
-9殺掉進程,這可能導致MySQL數據庫的物理結構損壞,無法重新啟動。
2.
在my.cnf文件[mysqld]部分添加skip-grant-tables參數
3.
登錄數據庫,修改root賬戶的密碼
以下是修改root密碼的三種方式:
1
mysql
set
password
for
‘root’@’localhost’=password(‘123’);
無需刷新權限表
2
mysql
update
mysql.user
set
password=password(“456”)
where
user=”root”
and
host=”localhost”;
mysql
flush
privileges;
3
#
mysqladmin
-u
root
password
“123”
4.
關閉數據庫,注釋掉skip-grant-tables參數,重新啟動數據庫。
上面這種方式雖然不錯,但是有個問題,你必須重啟數據庫,對於線上環境,這可能是不被允許的。
下面來談談另一種方法,有點“黑暗科技”的味道
這個方法利用的是mysql.user表還是MyISAM引擎的特性。
1.
將該實例的mysql.user表copy到另一個實例的目錄下,譬如,test數據庫的目錄下
2.
登錄另一個實例數據庫,修改上述三個文件的權限,並修改root密碼
mysql
select
user,host,password
from
test.user;
+——+———–+——————————————-+
|
user
|
host
|
password
|
+——+———–+——————————————-+
|
root
|
localhost
|
*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
|
+——+———–+——————————————-+
1
row
in
set
(0.00
sec)
mysql
update
test.user
set
password=password(“hello”)
where
user=”root”
and
host=”localhost”;
Query
OK,
1
row
affected
(0.15
sec)
Rows
matched:
1
Changed:
1
Warnings:
3.
將上述三個文件copy回源數據庫
4.
獲取mysqld的pid,通過kill
-HUP
`pidof
mysqld`方式讓mysqld進程重新加載配置文件
[root@keepalived01
~]#
mysql
-phello
Warning:
Using
a
password
on
the
command
line
interface
can
be
insecure.
ERROR
1045
(28000):
Access
denied
for
user
‘root’@’localhost’
(using
password:
YES)
[root@keepalived01
~]#
kill
-HUP
4283
[root@keepalived01
~]#
mysql
-phello
Warning:
Using
a
password
on
the
command
line
interface
can
be
insecure.
Welcome
to
the
MySQL
monitor.
Commands
end
with
;
or
\g.
Your
MySQL
connection
id
is
2528
Server
version:
5.6.26
MySQL
Community
Server
(GPL)
Copyright
(c)
2000,
2015,
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
通過上述輸出可以看出,kill
-HUP之前,直接用密碼hello登錄被拒絕,kill
-HUP之後,就可以直接登錄了。
當然,以上方法僅供參考,在生產上慎用,畢竟安全壓倒一切,天曉得哪裡會出現問題。
以上就是本文的全部內容,希望可以幫助大家解決root密碼忘記的困擾,謝謝大家的閱讀。
如何指定 /etc/init.d/mysqld 所加載的配置文件
沒辦法直接修改mysqld 的linux 默認參數文件位置,你直接在mysqld 的參數中用 –init-file=file_name
或者重新修改編譯mysql的C源文件。
或者在你的 /etc/init.d 不要直接放 mysqld ,面是放個腳本命令 mysql –init-file=file_name
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/195651.html