2010-11-10 99 views
2

我正在爲我們的一些軟件開發initscripts,並且難以決定如何將它用於特定的一塊。多進程InitScript邏輯

我們擁有自行開發的軟件,負責將數據傳出網絡,它建立在標準的pubsub模型上。有一個發佈者進程(實際上是兩個不同的用例),一個代理進程和一個訂閱者進程。這些過程的任何組合,甚至是同一過程的多個組合,都可以在給定的框中同時運行。我無法決定如何最好地配置它。由於它可以在不同的框之間變化,所以可能會進入/etc/sysconfig/pubsub,這將被initscript讀入。

我必須允許配置的唯一東西是(1)進程名稱,它是log_publish,dir_publish,broker,subscribe和(2)對應於該特定進程的配置文件之一。

我希望避免告訴人們如何修改每個盒子的initscript,以便更改正在運行的進程列表,因此每個盒子的這個唯一配置文件是我可以實現的最佳方式。

我認爲這也意味着我將不得不在每個進程上有一些獨特的標識符,因爲我打算使用大多數RedHat腳本使用的方法已經鎖定一個進程兩次運行。知道這一點,我知道標識符不能始終是隨機的,否則它永遠不會有效,以防止具有相同配置文件的重複進程(因爲我需要能夠使用不同的配置文件運行多個進程) 。

我不知道如何最好地在配置中表示這個。

回答

1

我已經實現了類似於VNC如何作爲initscript運行時的操作。

如果你看一下VNC初始化你的發行版的配置文件(如RedHat的/ CentOS的:/etc/sysconfig/vncservers),你看到這一點:

# The VNCSERVERS variable is a list of display:user pairs. 
# 
# Uncomment the line below to start a VNC server on display :1 
# as my 'myusername' (adjust this to your own). You will also 
# need to set a VNC password; run 'man vncpasswd' to see how 
# to do that. 
# 
# DO NOT RUN THIS SERVICE if your local area network is 
# untrusted! For a secure way of using VNC, see 
# <URL:http://www.uk.research.att.com/vnc/sshvnc.html>. 

# VNCSERVERS="1:myusername" 
# VNCSERVERARGS[1]="-geometry 800x600" 

漂亮的直線前進。您可以定義一個屏幕編號和必要時匹配的參數。

所以現在,我有,例如:

PUBSUBPROCS="1:publish 2:broker 3:subscribe" 
PUBSUBARGS[1]="/config/publish.cfg" 
PUBSUBARGS[2]="/config/broker.cfg" 
PUBSUBARGS[3]="/config/subscribe.cfg" 

而且最重要的邏輯解析這也從vncserver來啓動腳本,我不會張貼在這裏的長度原因拆出來的。

0

我會說有多個initscripts,每個進程類型一個,然後讓每個配置確定有多少個進程產卵。

+0

您有關於如何最好地管理配置所有這些過程的建議嗎?某種助手腳本/應用程序可以生成每個盒子需要的初始腳本? – VxJasonxV 2010-11-10 18:17:56

+0

只要擁有它們,讓人們使用chkconfig或者不要打開或關閉它們。 – 2010-11-10 18:19:05

+0

您錯過了可能有多個相同過程的部分。所以它不像「全部出貨並讓他們選擇」那麼簡單。我們有一個(不幸的)使用案例,其中我們的一個盒子有7個或8個發佈者,沒有別的。想想看,我實際上已經完全忘記了存在的第五個過程,我們在同一個多個發佈者框中使用。 「 – VxJasonxV 2010-11-10 18:30:29