做人,為什麼要過於執著?

在PTT  上看到一位id是 jfsu 寫的一篇回文,
真的寫的太好了....
不就是要讓她幸福嗎?
現在的她,的確是幸福的,
那的確就足夠了


做人,為什麼要過於執著?
                                                                             
我們都曾經以為,有些事情是不可以放手的。
我們不會放棄一個人。我們不會離開一個人,也不會讓一個人離開。
我們不會讓那個不愛我們的人得到自由。我們不會忘記也不想忘記。
是的,我們曾咬牙切齒的說:我是不會放手的!
其實,沒有什麼東西是不能放手的。時日漸遠,當你回望,你會發現,曾經以為不可能
放手的東西,只是生命中的一塊跳板。所有的哀傷、痛楚與不能放棄的事情,不過是
生命裡一個過渡,你跳過了,就可以變得更精采。
                                                                             
人在跳板上,最辛苦的不是跳下來那一刻,而是跳下來之前心裡的掙扎、猶豫、無助
和患得患失,根本無法向別人傾訴。
                                                                             
『都已經那麼久了!憑什麼她還能這樣擾亂我的生活!』
                                                                             
有時,我們會拒絕擺脫一些經驗、感覺、怨恨、憤怒,緊捉住這些東西不放,讓自己
喪失繼續前進,發掘現有掌控力的能力。困於過去那種沒有權力的狀態,你身上背著
哪樣的使你快樂不起來的情緒的包袱?你允許哪種負面頹喪的感覺主宰你的思想、
干擾你的自由呢?
                                                                             
感情只是人生的一個過程,你人生過程中總也有不好的事發生吧!
克服它,對你而言是件難事嗎?

傷害已經造成,再怎麼彌補還是會留下疤痕,但,有誰的感情是順順利利、有誰的人生
是一帆風順,跌倒而不留疤的呢?
                                                                             
很多事光只有想,是沒有任何意義的,你無法知道下一刻會發生什麼。
等你做了,就知道該如何繼續下去。
                                                                             
人的一生絕對沒有不勞而獲的事情,也絕對沒有不令人後悔的事情!
然而事過境遷之後,當我們可以笑著談論著當時的點點滴滴,一切都成了閒聊的話題。
為了能夠笑談往事,只有繼續努力,縱使經歷許多挫折、許多懊悔,仍然繼續努力,
最後成為茶餘飯後的閒話家常。
                                                                             
無論經歷什麼,這些都是每個人必須的過程!
                                                                             
感情這種事,無關對錯,尤其是分手,更別說都是自己的錯!
會走上這一步,多少都會有理由,但有一件事要提醒自己,要哭要笑都沒關係,但
就是不要不吃不喝不睡折磨自己。
這無法改變現有的事實,也無助於改善自己的情緒!
                                                                             
不要失去愛人的心,你還有關心你的朋友,親人,你並不是一個人!
在你還沒認識對方之前,不也是一個人過得好好的?
哭泣的時候就放聲大哭但不要忘了微笑以對!

愛一個人不就是要讓她幸福嗎?現在的她是幸福的,那就足夠了,不是嗎?
遺憾早已在當時分手時就以留下,何必自尋煩惱地困在多年前的自己!
就算追回來了,她也早已不是當時的她。
                                                                             
世界上充滿著值得追求的需要、待支持的目標、待減輕的痛苦、待完成的善事!
偶爾,也謝謝那個陪著你走的人吧!
                                                                             
你是不是也欠身邊的人一句謝謝呢?!



~~

Just The Way You Are


今天又把歌喉讚看了一遍,
就是妳現在的樣子.......
哈.哈....腦中又一堆畫面.....唉
















Oh her eyes, her eyes make the stars look like they're not shining
喔~ 她的雙眼,她的雙眼比星星還閃爍
Her hair, her hair falls perfectly without her trying
她的秀髮,她的秀髮百分百自然的垂墜
She's so beautiful, and I tell her every day
她是如此的美,而我每天都這樣告訴她
Yeah I know, I know when I compliment her, she won't believe me
是啊,我知道,我知道在我讚美她時,她不會相信
And its so, its so sad to think that she don't see what I see
實在很,實在很難過她和我所見不同
But every time she asks me do I look okay, I say
但每回她問起我"我看起來好嗎?",我會說

When I see your face, there's not a thing that I would change
在看妳的臉時,我一點也不想改變它
Cause you're amazing, just the way you are
因為妳好棒--就是妳現在的樣子
And when you smile, the whole world stops and stares for a while
而當妳微笑時,整個世界都暫時停了下來凝視妳
Cause girl you're amazing, just the way you are
因為女孩妳好棒--就是妳現在的樣子

Yeah, her lips, her lips I could kiss them all day if she'd let me
啊,她的雙唇,她的雙唇,如果她同意我想親上一整天
Her laugh, her laugh she hates but I think its so sexy
她的笑聲,她的笑聲,雖然她不喜歡,但我覺得很性感
She's so beautiful, and I tell her every day
她是如此的美,而我每天都這樣告訴她

Oh you know, you know, you know I'd never ask you to change
喔,妳知道,妳知道,妳知道,我從來不要求妳改變
If perfect is what you're searching for, then just stay the same
如果妳追求完美,那麼就維持原狀吧
So, don't even bother asking if you look okay, you know I'll say
所以,別問妳看起來可好,妳知道我一定會說

When I see your face, there's not a thing that I would change
在看妳的臉時,我一點也不想改變它
Cause you're amazing, just the way you are
因為妳好棒--就是妳現在的樣子
And when you smile, the whole world stops and stares for a while
而當妳微笑時,整個世界都暫時停了下來凝視妳
Cause girl you're amazing, just the way you are
因為女孩妳好棒--就是妳現在的樣子

The way you are, the way you are
妳現在的樣子,妳現在的樣子
Girl you're amazing, just the way you are
女孩妳好棒--就是妳現在的樣子

When I see your face, there's not a thing that I would change
在看妳的臉時,我一點也不想改變它
Cause you're amazing, just the way you are
因為妳好棒--就是妳現在的樣子
And when you smile, the whole world stops and stares for a while
而當妳微笑時,整個世界都暫時停了下來凝視妳
Cause girl you're amazing, just the way you are
因為女孩妳好棒--就是妳現在的樣子

~~

LVM 使用linear 方式

兩顆 3TB HDD 做 LVM,使用 linear 方式

1. 使用GPT方式,而不是用Fdisk
安裝3TB以上硬碟,且不是開機碟,的做法如下,
用Ubuntu 13.04 ,kernel要支援GPT

#parted /dev/sda
(parted) mklabel gpt
(parted) unit TB
(parted) mkpart primary 0 -0
(parted) print
(parted) quit
#mkfs.ext4 /dev/sda1

2.要記得裝lvm2套件,
apt-get install lvm2

(一) 建立LVM

規劃如下:
1. 使用/dev/sda1 一個分割區建立LVM。
2. 只建立一個VG,名稱為 logvg,PE=16M。
3. 只建立一個LV,名稱為 loglv,將VG的所有PE用來建立此LV。
4. 在LV上建立ext4檔案系統。
5. 掛載 /dev/logvg/loglv 到 /mnt/data。

實作:
使用fdisk指令將 /dev/sda1之Partition ID 設成8e 。(註:此步驟不做也沒關係)
pvcreate  /dev/sda1
vgcreate  -s  16M logvg  /dev/sda1
lvcreate  -l 119232 -n loglv  logvg  (可先使用「vgdisplay logvg」知道可用PE數量)
mkfs -t  ext4 /dev/logvg/loglv
mkdir -p /mnt/data
mount  /dev/logvg/loglv /mnt/data

(二) 運作中的LVM增加容量(擴大檔案系統)

續上例規劃如下:
1.在建立好的logvg上新增一個分割區 /dev/sdb1。
2.在logvg多出的可使用PE全部給 loglv。
3. 線上調整 /dev/logvg/loglv檔案系統容量。

實作:
使用fdisk 指令將 /dev/sdb1之Partition ID 設成8e。
pvcreate  /dev/sdb1
vgextend  logvg /dev/sdb1
lvresize -l +119232  /dev/logvg/loglv ( 可先使用「vgdisplay  logvg」指令知道可用PE數量)
resize2fs  /dev/logvg/loglv (將分割區的所有空間給檔案系統使用)

註:上面指令操作時,/dev/logvg/loglv檔案系統不需卸載

參閱 
http://www.cyberciti.biz/tips/fdisk-unable-to-create-partition-greater-2tb.html

~~

LVM 使用 Striped 方式

LVM 使用Striped 方式

兩顆HDD使用Striped的方式
1. Create the physical volumes for LVM to use.
pvcreate /dev/sda1
pvcreate /dev/sdb1

2. Create our volume group.
vgcreate -s 16M logvg /dev/sda1 /dev/sdb1

You can verify that it's there by typing vgdisplay logvg

3. Now let's create our logical volume, and we'll stripe it across all two disks.
lvcreate -i2 -I64 -L 8000G -n loglv logvg /dev/sda1 /dev/sdb1
OR
lvcreate -i2 -I64 -l 476930 -n loglv1 logvg1 /dev/sda1 /dev/sdb1

64KB is default stripesize

You can verify that it's there by typing lvdisplay /dev/logvg/loglv

4. Now let's create our filesystem.
mkfs -t ext4 /dev/logvg/loglv

5. Add it to /etc/fstab
vi /etc/fstab

Append the following to the end of the file:
/dev/logvg/loglv      /mnt/data              ext4    defaults        0 0


The important switches you want to look at are -i and -I:

-i: number of stripes. You want to equal to the number of disks in your volume group.
-I: size of your stripes. This has to be in power of 2, (2,4,8,16,32,64,etc),
    and cannot exceed the extent size (in our example is 64 megabytes
    which is set by the vgcreate flag -s). The unit you set is in kilobytes.
    so -I64 would be stripe sizes of 64 kilobytes.

參閱
http://linux.vbird.org/linux_basic/0420quota.php#lvm
https://www.ibm.com/developerworks/community/blogs/AWojo/entry/basic_linux_lvm_striping1?lang=en

~~



動態磁碟 不正確

動態磁碟 不正確
一句話,
testdisk
選 No Log
選有問題的硬碟
選Intel
選Analyse
選Quick Search 或 Deeper Search
選Write
Quit
收工
重開機,
就可抓到有問題的磁碟,
原動態也被轉成基本磁碟

~~


螢幕上半部,有時部分區塊會變黑

螢幕上半部,有時部分區塊會變黑
User遇到這問題,直覺螢幕有問題,
換了三個依然(這時的我應是神經病了),
想說是驅動或BIOS不對,都予以調整,
也依然,
這時的我,才想到要細問User發生的方式,
真正的問題點,才能找到真正的方向,
也才明白,
是使用chrome時,且用Win 8.1的顯示桌面(按右下角的方式),
再切回chrome時,才會如此,其它方式不會,
而只要關掉chrome的硬體加速功能,
就可正常操作了

MSI  H61M-P31 / W8
Intel i3-3220 / HD2500
Windows 8.1 pro

~~

香格里拉
















我以為認真去做就能實現我的夢
以為寫首好歌走路就能抬起頭
以為騎摩托車旅行就能變英雄
現在的我失去了衝動

有才華的人唾棄金光閃閃的獎座
親愛的 Cobain 是否也曾愛慕虛榮
多希望有人衝破疑惑帶我向前走
現在的我變的好懦弱

雨會下雨會停 這是不變的道理
夜空中北極星 迷路的人不恐懼
我唱歌你在聽 一切風平又浪靜
G和絃的根音 撫平脆弱的心靈

我只想牽著你 走到很遠的夢裡
小木屋紅屋頂 地址是一個秘密
你抱著小貓咪 藍眼睛不再憂鬱
香格里拉在那裡 讓我們去找尋

我以為認真去做就能實現我的夢
以為寫首好歌走路就能抬起頭
以為騎摩托車旅行就能變英雄
現在的我失去了衝動

雨會下雨會停 這是不變的道理
夜空中北極星 迷路的人不恐懼
我唱歌你在聽 一切風平又浪靜
G和絃的根音 撫平脆弱的心靈

我只想牽著你 走到很遠的夢裡
小木屋紅屋頂 地址是一個秘密
你抱著小貓咪 藍眼睛不再憂鬱
香格里拉在那裡 讓我們去找尋


~~

deserve

We accept the love we think we deserve
前些日子,看HBO播壁花男孩,
著實想了許久,
在愛情中,我們是否都走錯了許久,
卻不曾發現呢,
還是明錯,而將錯就錯呢,
直到
一個轉身,
而傷害了彼此
該付出的,
卻停滯不前的等待,
這是為什麼呢
又回到了第一句
We accept the love we think we deserve

---------

一直到妳交了新男友,
我真正的失去妳了,
而這時間,我走不出,心中一直很糾結,
直到一個Moment,
才明白我們都值得更好的人,
謝謝妳帶給我九個多月的美好,
祝福妳,未來的一切


不令 

~~

SugarCRM LDAP Support

讓 SugarCRM 使用LDAP連OpenLDAP

續上篇....
Go to: Admin > Password Management
1. Select "Enable LDAP Support"
2. For OpenLDAP Setup:

Server: IP Address (Example: 192.168.1.1 or ldap.test.com)
Port Number: 389
User DN: ou=People,dc=test,dc=com
User Filter: blank
Bind Attribute: dn
Login Attribute: uid
Group Membership: UNCHECK
Authentication: cn=Manager,dc=test,dc=com
Auto Create Users: CHECKED
Encryption Key: blank

以上要搭配slapd.conf 中 Access的權限設定,
如不對,是無法登入的

Auto Create Users :
是 LDAP Server 已有的帳號,
而SugarCRM本身沒有的,就會建立
一定要打勾,
要不然會出現 You must specify a valid username and password.

LDAP 沒有的帳號,而SugarCRM 已有存在的,那當然就會用CRM存在的帳號登入

參閱
http://davidatenney.wordpress.com/2010/04/13/sugar-ldap-installation/

~~

ldap user password change web

安裝self service password
http://ltb-project.org/wiki/download

config 設定參如下,
http://ltb-project.org/wiki/documentation/self-service-password/latest/config_ldap

差別在
$ldap_filter = "(&(objectClass=person)(uid={login}))";
要改成
$ldap_filter = "(&(objectClass=account)(uid={login}))";


$who_change_password = "user";
改成
$who_change_password = "manager";

$hash = "CRYPT";
hash 選符合自己openldap的

這樣就可讓使用者用Web 的方式改密碼

LDAP 的安裝參考
http://blog.jangmt.com/2012/08/centos-6-ldap-server-ldap.html

LDAP + phpldapadmin 參考
http://phorum.study-area.org/index.php?topic=67535.0

LDAP Replication 參考
http://phorum.study-area.org/index.php/topic,67566.0.html
MirrorMode 方式可行,
用Syncrepl則會一直有錯誤,沒法replication,找不出為什麼


~~

How to configure an NTP Server in Windows Server 2012

How to configure an authoritative time server in Windows Server 2012

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config]
"MaxNegPhaseCorrection"=dword:00000e10
"MaxPosPhaseCorrection"=dword:00000e10
"AnnounceFlags"=dword:00000005

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters]
"NtpServer"="tock.stdtime.gov.tw,0×1 watch.stdtime.gov.tw,0x1 time.stdtime.gov.tw,0x1"
"Type"="NTP"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient]
"SpecialPollInterval"=dword:00000384

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer]
"Enabled"=dword:00000001


Restart the time service:
net stop w32time && net start w32time
參閱

在Windows 下client 端,修改機碼,只要改一地方,
NTP Server 在 Windows 下設多筆的機碼位置
HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters

HKEYLOCALMACHINE\SYSTEM\ControlSet001\Services\W32Time\Parameters
中的NTPServer
ip 和 ip 之間,要有空格

直接下指令,
手動指派 NTP 伺服器位址時,可以設定不止一組,
這樣也許可以增加校時的有效性,當第一台 NTP 校時伺服器掛掉時會自動切換到第二台進行校時。
w32tm /config /update /manualpeerlist:"192.168.1.1 192.168.1.2,0x1"

~~

流量不大,卻Connection time 過久,造成網頁出不來

一台Ubuntu 12.04 x64 裝 Apache,
是VM 主機,2 Core,4GB Ram,
連網頁時,會發生 Connection time 過久到 timeout,
這台是用worker module,
修正參數如下
<IfModule mpm_worker_module>
StartServers 2
ServerLimit 200
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxClients 5000
MaxRequestsPerChild 0
</IfModule>

明顯的改善到10~20ms

後記
發現Log會有 kernel: nf_conntrack: table full, dropping packet 的情形,
(因為此機器,有使用iptables,如果不用,不會有這問題)
而造成在某一時段時,會突然Connection time拉到1~4秒,連線變很慢,
解決table full 的方法很多
廠商給的建議是調整以下兩參數,
ip_conntrack_max
ip_conntrack_tcp_timeout_established
在Ubuntu 12.04 下是在
/proc/sys/net/ipv4/netfilter
ip_conntrack_max = 655350
ip_conntrack_tcp_timeout_established = 10800

可寫到 sysctl.conf
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_fin_timeout = 30
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.netfilter.ip_conntrack_max = 655350
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 10800
記得要 sysctl -p

又或寫到 rc.local
echo 655350 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo 10800 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

心得
機器上線前,要考量可能的連線數,
不只調整Apache,也記得要調整核心參數,
尤其是有用iptables時


參考
http://blog.yorkgu.me/2012/02/09/kernel-nf_conntrack-table-full-dropping-packet/
http://storysky.blog.51cto.com/628458/243835

後後記...
攻擊無所不在,
kern.log會出現一堆 unexpectedly shrunk window的訊息,
再安裝fail2ban,來防止此問題

我們需要增加檔案 /etc/fail2ban/filter.d/shrunk-window.conf
內容如下
[Definition]
failregex = TCP\: Peer <HOST>\:.* unexpectedly shrunk window.*repaired+
ignoreregex =
修改 /etc/fail2ban/jail.conf 加入
[shrunk-window]
enabled  = true
filter = shrunk-window
logpath = /var/log/kern.log
port = all
banaction= iptables-allports
port = anyport
maxretry = 1
可以利用 fail2ban-regex 指令檢查shrunk-window.conf內的failregex有無問題!
http://linux.die.net/man/1/fail2ban-regex
# fail2ban-regex /var/log/kern.log /etc/fail2ban/filter.d/shrunk-window.conf
如果列出了那些警告訊息,那就表示成功了!
此引用參考
http://petonline.dyndns.org/node/114

後後後記.............
在高峰時段,流量雖沒衝到100M以上,但Connection time就是會超過一秒,
因為流量小,不代表連線數少,
大約會有四五仟左右,不含time wait,syn_recv等....
因此再修正
<IfModule mpm_worker_module>
   StartServers 2
   ServerLimit 200
   MinSpareThreads 25
   MaxSpareThreads 75
   ThreadsPerChild 50
   MaxClients 10000
   MaxRequestsPerChild 0
</IfModule>
再度明顯改善.......
要時時觀察 Connection 數,來做調整....

~~


VERR_UNRESOLVED_ERROR


VirtualBox 開一台VM Linux 時發生如上圖的狀況,
很肯定硬碟還有空間,
整台也chkdsk過,不是硬碟問題,
結論是,下壓縮指令,
VBoxManage modifyvdi  XXX.vdi compact
就可正常開啟VM了

昨天是秋分,也結束一段感情....唉..






ping general failure

一台 2008 r2 去ping外網會general failure
在另一實體ip段,卻不會,很怪,
原因在於
網卡中將NLB給打勾.....
就會如此....

原本不會或許是因原架構是在Loadbalance底下的關係


~~


載著夢想的熱氣球



花蓮的熱氣球,感覺上差了台東一點,
可能是整體觀看的感覺,
不過還是希望朋友們能來花蓮捧場,
畢竟還是有點差異性

至於我什麼時候能回花蓮,
計畫永遠趕不上變化...

~~



飛蚊症....眼睛積水

2012年7月2日真是糟糕的一天
我的右眼玻璃體退化
從此..我的世界不一樣了

以為是世界末日...
才發現很多人都如此..
但就是很難適應...
我要如何度過這難關呢...

後記....
去了第三家醫院....
醫生說...我是眼睛積水..
............
三個月後..
水退了..
但我的視野......
總覺得不像以前那樣....




gvpe 安裝操作

由於也有在用gvpe來作vpn site to site,怕久了忘記,所以寫來備忘,
參考網路上兩位前輩的設定....實作是沒問題的,
也可看gvpe中的README..

假設有二台主機,分別為Private1Private2,先在Private1操作
  1. tar -zxvf gvpe-2.24.tar.gz -C /usr/src/
  2. ./configure ( ./configure --enable-digest=sha512 --enable-cipher=aes-256 )
  3. make
  4. make install
  5. mkdir /etc/gvpe 目錄
  6. create gvpe.conf 內容如下,
    rekey = 300
    keepalive = 300
    mtu = 1500
    ifname = vpn0
    ifpersist = no
    inherit-tos = yes
    compress = yes
    connect = always
    loglevel = notice
    enable-udp = yes
    enable-tcp = yes
    enable-rawip = no
    enable-icmp = yes
    node= Private1
    hostname = 1.2.3.4 <Public IP>
    node= Private2
    hostname = 5.6.7.8 <Public IP>
  7. create if-up 內容如下
    #!/bin/bash
    ip link set "$IFNAME" address "$MAC" txqlen 1000 up
    [ "$NODENAME" = "Private1" ] && ip addr add 10.100.1.1 broadcast 10.100.1.255 dev "$IFNAME"
    [ "$NODENAME" = "Private2" ] && ip addr add 10.100.2.1 broadcast 10.100.2.255 dev "$IFNAME"
    ip route add 10.100.0.0/16 dev "$IFNAME"
    IN_NIC="eth0"   #eth0是指內部網段
    IN_IP=`ifconfig "$IN_NIC"|grep -w "inet addr"|cut -d':' -f2|cut -d' ' -f1`
    IN_IP_SUB=`echo "$IN_IP"|cut -d. -f3`
    for i in 1 2
    do
    if [ "$i" = "$IN_IP_SUB" ]
    then
    continue
    fi
    route add -net 10.100.$i.0 netmask 255.255.255.0 gw 10.100."$i".1
    done
  8. gvpectrl -c /etc/gvpe -g
  9. gvpe.confif-up拷貝到Private2 主機的 /etc/gvpe
  10. pubkey目錄也是整個拷到Private2 主機的 /etc/gvpe
  11. cp /etc/gvpe/hostkeys/Private1 /etc/gvpe/hostkey
  12. 而Private1主機中 hostkeys目錄下的Private2 則拷到Private2主機的 /etc/gvpe/hostkey
  13. Private2主機要重複上面16步驟
  14. 在Private1 主機上執行 /usr/local/sbin/gvpe -c /etc/gvpe gvpe -D -l info Private1
  15. 在Private2 主機上執行 /usr/local/sbin/gvpe -c /etc/gvpe gvpe -D -l info Private2
  16. 如有成功會出現connection established
  17. ping 對方的10.100.1.110.100.2.1應會是通的




附註說明

製造金鑰
# gvpectrl -c /etc/gvpe -g
這個產生key的指令會略過已經存在的Key

啟動gvpe
# /usr/local/sbin/gvpe -c /etc/gvpe -D -L -linfo Private2
Private2是指node

Configuration
#gvpectrl -c /etc/gvpe -s

檢查是否通
tcpdump -i vpn0 -vv
vpn0gvpe.conf所定義的虛擬網卡名稱

參考引用自:



LVS 配置 Windows 2003 RealServer 解決arp問題

在 Windows 2003下如何解決RealServer 的Arp 問題
其它Windows Server 應是大同小異













































先將Loopback AdapterVip ip,然後修改機碼 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\
找到設為VipIPADDR修改SubnetMask255.255.255.255




最後重啟LoopBack Adapter網卡

參考引用自

CentOS 6.2 下搭建LVS(DR)+Keepalived實現高性能高可用負載均衡服務器

CentOS 6.2 下搭建LVS(DR)+Keepalived實現高性能高可用負載均衡服務器


前言部分來源於網路


背景:
       
隨著你的網站業務量的增長你網站的服務器壓力越來越大?需要負載均衡方案!商業的硬件如F5又太貴,你們又是創業型互聯公司如何有效節約成本,節省不必要的浪費?時實現商業硬件一樣的高性能高可用的功能?有什麼好的負載均衡可伸張可擴展的方案嗎?答案是肯定的!有!我們利用LVS+Keepalived基於完整開源軟件的架構可以為你提供一個負載均衡及高可用的服務器。

1
LVS+Keepalived
LVS
Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統。本項目在19985月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。
目前有三種IP負載均衡技術 (VS/NATVS/TUN 和 VS/DR) 


十種調度算法 (rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)
Keepalived在這裡主要用作 RealServer 的健康狀態檢查以及LoadBalance主機和BackUP主機之間 failover 的實現

2
負載均衡拓撲圖



3、在2Director ServerLVS_Master)上分配置LVS+Keepalived
實驗環境是CentOS6.2 ,且配置YUM
keepalived
http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
ipvsadm: http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz 
注意:(for kernel 2.6.28-rc3 or later) 
popt-static
http://mirror.centos.org/centos/6/os/x86_64/Packages/popt-static-1.13-7.el6.x86_64.rpm
首先下載popt-static:具體原因可以查看http://crazylinux.blog.51cto.com/259244/811591
[root@host1 ~]# rpm -ivh popt-static-1.13-7.el6.x86_64.rpm  [root@host1 ~]# yum -y install kernel-devel make gcc openssl-devel  libnl* popt*
[root@host1 ~]# ln -s /usr/src/kernels/2.6.18-194.el5-x86_64/ /usr/src/linux

[root@host1 ~]# tar -zxvf ipvsadm-1.26.tar.gz -C /usr/src/
[root@host1 ~]# cd /usr/src/ipvsadm-1.26/
[root@host1 ipvsadm-1.26]# make
[root@host1 ipvsadm-1.26]# make install
[root@host1 ~]# tar -zxvf keepalived-1.2.2.tar.gz -C /usr/src/
[root@host1 ~]# cd /usr/src/keepalived-1.2.2/
[root@host1 keepalived-1.2.2]# ./configure
[root@host1 keepalived-1.2.2]# make
[root@host1 keepalived-1.2.2]# make install
[root@host1 keepalived-1.2.2]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
[root@host1 keepalived-1.2.2]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@host1 keepalived-1.2.2]# mkdir /etc/keepalived
[root@host1 keepalived-1.2.2]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[root@host1 keepalived-1.2.2]# cp /usr/local/sbin/keepalived /usr/sbin/


4
、在2Director ServerLVS_Master)上分配置Keepalived
[root@host1 ~]# less /etc/keepalived/keepalived.conf   
! Configuration File for keepalived   
global_defs {  
   router_id  LVS_MASTER     網上資料說這個值也需要修改,具體不詳,之前我們線上的主備就一直是一樣的 ^ ^還是修改一下吧!   
}  
vrrp_instance VI_1 {   
    state MASTER          # LVS_Backup上修改成BACKUP  
    interface eth0   
    virtual_router_id 51   
    priority 100                # LVS_Backup上修改成80 
    advert_int 1   
    authentication {   
        auth_type PASS   
        auth_pass 1111   
    }   
    virtual_ipaddress {   
        192.168.10.100   
    }   
}  
virtual_server 192.168.10.100 80 {   
    delay_loop 6   
    lb_algo rr   
    lb_kind DR   
    nat_mask 255.255.255.0   
    persistence_timeout 50   
    protocol TCP   
    real_server 192.168.10.3 80 {   
        weight 1   
        TCP_CHECK {   
        connect_timeout 10   
        nb_get_retry 3   
        connect_port 80   
        }   
    }   
    real_server 192.168.10.4 80 {   
        weight 1   
        TCP_CHECK {   
        connect_timeout 10   
        nb_get_retry 3   
        connect_port 80   
        }   
    }   
}

BACKUP服務器同上配置,先安裝lvs再按裝keepalived,然後配置/etc/keepalived/keepalived.conf,只需將紅色標示的部分改一下即可。


5、分2Real Server上面編寫腳本並啟動 (Windows 請參考另一篇)
[root@host3 init.d]# cat /etc/init.d/realserver.sh      
#!/bin/bash  
SNS_VIP=192.168.10.100            
. /etc/rc.d/init.d/functions            
case "$1" in 
start)  
        ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP   
        /sbin/route add -host $SNS_VIP dev lo:0   
        echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore   #啟動是抑制相關arp動作
        echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce   
        echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore   
        echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce   
        sysctl -p >/dev/null 2>&1   
        echo "RealServer Start OK"           
        ;;   
stop)  
        ifconfig lo:0 down   
        route del $SNS_VIP >/dev/null 2>&1   
        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore   
        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce   
        echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore   
        echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce   
        echo "RealServer Stoped" 
        ;;   
        *)   
        echo "Usage: $0 {start|stop}" 
        exit 1   
esac            
exit 0       


6、在2RealServer中分配置HTTP並啟動 realserver.sh
[root@host3 ~]# yum -y install httpd
[root@host3 ~]# cd /var/www/html/
[root@host3 html]# cat index.html
<h1>RealServer 192.168.10.3</h1>
[root@host3 html]# /etc/init.d/httpd start
[root@host3 ~]# /etc/init.d/realserver.sh start

另一台機器配置一樣,過程略、、、


7測試
分別啟動Keepalived
[root@host1 ~]# chkconfig keepalived on
[root@host1 ~]# /etc/init.d/keepalived restart
[root@host1 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.100:http rr persistent 50
  -> 192.168.10.3:http            Route   1      0          0         
  -> 192.168.10.4:http            Route   1      0          0   
先關閉LVS_MasterKeepalived,觀察LVS_Backup的日誌

[root@host2 ~]# tail -f /var/log/messages
Mar 21 07:22:28 host2 Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Mar 21 07:22:29 host2 Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Mar 21 07:22:29 host2 Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
Mar 21 07:22:29 host2 Keepalived_healthcheckers: Netlink reflector reports IP 192.168.10.100 added
Mar 21 07:22:29 host2 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.10.100


在測試機上訪問:




啟動LVS_Master,在查看LVS_Backup


[root@host2 ~]# tail -f /var/log/messages

Mar 21 07:26:20 host2 Keepalived_vrrp: VRRP_Instance(VI_1) Received higher prio advert

Mar 21 07:26:20 host2 Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE

Mar 21 07:26:20 host2 Keepalived_vrrp: VRRP_Instance(VI_1) removing protocol VIPs.

Mar 21 07:26:20 host2 Keepalived_healthcheckers: Netlink reflector reports IP 192.168.10.100 removed




一切訪問正常~!祝各位好運!~


本文出自 “CrazyLinux工作室” 博客,請務必保留此出處http://crazylinux.blog.51cto.com/259244/811952



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
個人實作上遇到的問題....
1.  在打ipvsadm -lcn 看到 syn_recv一堆,怎麼樣就是不能連到 RIP 的網頁,錯就錯在我把   realserver.sh 的SNS_VIP一直寫成LVS主機的實體ip...如用以上範例來解釋,就是寫成192.168.10.1...就會發生這種情形...


2. 如把realserver.sh stop 停用,然後再start,在連LVS的VIP時,有可能完全沒連線,這時請把 網頁關閉或電腦的 arp 清掉,再開即可


3. syn_recv  問題還有可能就是 keepalived.conf 中的 interface介面設錯(eth1打成eth0等等),也會如此,跨不同的網段(10.1.1的想跨到192.168.1)也會如此,這都是要注意的




相關 LVS 解釋可參考
http://www.lslnet.com/linux/f/docs1/i38/big5277307.htm

~~