Kulunzanitsa kwathunthu kwa zikwatu zogawana, zolumikizirana, makalendala pakati pa ma seva a Kerio Connect omwe adagawidwa

Masana abwino, Habr!

Cholinga

Bungwe langa limagwiritsa ntchito seva yamakalata papulatifomu ya Kerio Connect; maseva amakalata amaikidwa m'mizinda yosiyanasiyana kuti athandize ogwiritsa ntchito. Poyamba panalibe dongosolo logawidwa, popeza madera amasiyana pa mlingo wachitatu, kusonyeza mzinda wa malowo. Zonse zinayenda bwino ndipo aliyense anali wosangalala. Tsiku lina labwino, oyang'anira adakhazikitsa ntchito, kalendala wamba ya zochitika pakati pa masamba onse!

prehistory

Poyambirira, lingaliro linali lokweza Kerio Distributed Mail Domain ndipo lingachite zonse palokha. Posakhalitsa, malo omwe adagawidwa adapangidwa, koma sizinali choncho, sevayo inali yokonzeka kugwirizanitsa makalendala, zikwatu, zolumikizana - pakati pa madera omwe ali pa seva yomweyo, koma sichinayambe kulunzanitsa deta pakati pa angapo. maseva.

Zachidziwikire, sindimayembekezera kugwira kotereku ndipo kwa nthawi yayitali sindimakhulupilira kuti magwiridwe antchito omwe ndimafunikira akusowa. Kenako ndinapeza umboni wosonyeza zimenezi. Ndinadabwa kwambiri ndi kukhumudwa ndi izi.

Ntchitoyo inasanduka vuto bwinobwino.

Kodi zosankha zinali zotani?

  • Pangani makasitomala awiri pa ma seva osiyanasiyana omwe amasinthanitsa deta yofunikira ndi mapulogalamu ena a chipani chachitatu. Zinali zofunikira kupeza pulogalamu ya chipani chachitatu yomwe ingagwiritsire ntchito ntchitoyi - sindimakonda chofufumitsa chotere, koma zinkawoneka kuti iyi inali njira yokhayo yofulumira.
  • Lembani zolemba zanu za kulunzanitsa deta pakati pa maseva. Chowonadi ndi chakuti Kerio amasunga chinthu chilichonse ngati fayilo yosiyana, kotero kunali koyenera kupanga script yogwira ntchito ndi mafayilo, koma chifukwa cha chiwerengero chokwanira cha magwero, ntchitoyi inkawoneka yovuta, makamaka popeza kunali koyenera kuchita zambiri. imayang'ana kulondola kwa data, ngati wina apanga ntchito munthawi yomweyo, etc., etc.

Kuyang'ana m'tsogolo, ndikunena kuti ngakhale Kerio amasunga chinthu ngati fayilo yosiyana, sizopusa ngati kufunsa momwe mafayilo amachitira nthawi iliyonse mukapeza chinthucho.

Nditakhala nthawi yayitali ndikuganiza, ndikujambula mapepala ambiri okhala ndi mapulani "olanda gawo la adani," pa 6 koloko ndinapanga zisankho ziwiri zoyenera:

  • Chisankho choyamba ndikuchita zanu nokha osayang'ana chilichonse chakunja.
  • Njira yachiwiri ndiyo kugona.

Kale m'mawa ndinadzuka ndi lingaliro limodzi loona, lomwe linachepetsedwa kukhala zilembo zochepa - DFS

chisankho

Yankho lokha linkawoneka chonchi

  • bweretsani ma seva onse omwe atenga nawo gawo pakulumikizana ndi OS Windows. (Mbali ina inali pa Linux. Kusamutsidwa kwamakalata kupita ku OS ina kunali kofunikira)
  • Tsimikizirani mawonekedwe aakalozera omwe atenga nawo gawo pakulumikizana - ayenera kukhala ofanana.
  • Tanthauzirani ma seva onse a makalata pansi pa domeni imodzi yokhala ndi malo amodzi a DFS.
  • Pangani domain ya Kerio yomwe yatchulidwa pamwambapa, popeza kwa ine kulunzanitsa kwa data kumafunikira, osati pakati pa ma seva komanso pakati pa madera; yachiwiri imatha kuyendetsedwa ndi seva ya Kerio payokha. (mosiyana ndi woyamba)
  • Khazikitsani maulalo olumikizidwa ku malo a DFS.
  • Bwerani ndi ndodo yamtundu wina (pambuyo pake, simungakhale opanda ndodo)

РСализация

Chitsanzo pa seva ziwiri zamakalata (mwina zambiri)

1. Kerio Distributed domain

Kulunzanitsa kwathunthu kwa zikwatu zogawana, zolumikizirana, makalendala pakati pa ma seva a Kerio Connect omwe adagawidwa

Master satenga nawo gawo pakulumikizana, koma izi sizofunikira.

Sindingafotokoze momwe mungakwezere dera logawidwa la Kerio, palibe chovuta pa izi, mutha kuphunzira mutu

Pamapeto pake, muyenera kuwona chithunzi chotsatira mu admin console:

Kulunzanitsa kwathunthu kwa zikwatu zogawana, zolumikizirana, makalendala pakati pa ma seva a Kerio Connect omwe adagawidwa

Kulunzanitsa kwathunthu kwa zikwatu zogawana, zolumikizirana, makalendala pakati pa ma seva a Kerio Connect omwe adagawidwa

Kenako ndinali ndi chidwi ndi mafoda omwe adagawana nawo; pa Master seva mutha kufotokoza izi:

Kulunzanitsa kwathunthu kwa zikwatu zogawana, zolumikizirana, makalendala pakati pa ma seva a Kerio Connect omwe adagawidwa

Kulunzanitsa kwathunthu kwa zikwatu zogawana, zolumikizirana, makalendala pakati pa ma seva a Kerio Connect omwe adagawidwa

Zachindunji pa domain iliyonse - seva sidzagwirizanitsa zikwatu zapagulu pakati pa madambwe

Zofanana ndi madambwe onse - maseva onse adzasiya zikwatu zomwe zilipo pagulu lililonse ndikupanga zikwatu zatsopano za madambwe onse pa seva iliyonse yamakalata.

Chonde chonde! Ngakhale njirayi imasintha ndondomeko yosinthira pa ma seva onse, imagwirizanitsa mosiyana ndi seva iliyonse (ndiko kuti, popanda malo amodzi wamba)

Woyang'anira adzakhalabe ndi mphamvu yogawa mwayi pakati pa ogwiritsa ntchito.
kwa ine, onse ndi anga ndipo ndimafunikira kulunzanitsa kwathunthu (Kwa inu, yankho likhoza kukhala losiyana) pa seva iliyonse muyenera kupanga magawo ofanana omwe amafunikira kulumikizidwa.

2. Maupangiri a data a Kerio

Tsopano muyenera kupanga zolemba zofananira zomwe ziyenera kulumikizidwa pa seva iliyonse. Zikwatu, Kalendala, Contacts.

Malangizo - pangani zolemba m'Chingerezi, ngati muwapanga mu Chilatini, bukhuli lidzakhala ndi dzina mu encoding yosamvetsetseka, izi ndizosasangalatsa.

Tsopano muyenera kupeza njira zenizeni za zikwatu zamakalata pa seva iliyonse.

Zofanana ndi madambwe onse ~DataMailmail#publicΠ‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³#msgs
Zachindunji pa domain iliyonse ~DataMailmail**Domain**#publicΠ‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³#msgs

Chonde dziwani kuti sitigwirizanitsa chikwatu chonse, koma chidebe chokhacho ndi data #msgs - zinthu zomwe zimasungidwa pano, deta ina yonse iyenera kukhala yosiyana pa seva iliyonse.

3.DFS

Sindidzalongosola mwatsatanetsatane momwe mungakhazikitsire DFS, pali zambiri zokwanira pa nkhaniyi.

DFS ndi ntchito yothandiza mu Windows Server yomwe imapereka mwayi wophatikiza zikwatu zogawana zomwe zili pamaseva osiyanasiyana
Lumikizani ku chikalata cha MS DFS

Musanakhazikitse DFS, muyenera kuyimitsa ma seva onse amakalata omwe atenga nawo gawo pakulumikizana kwa data.

Mukamaliza kukhazikitsa, muyenera kulandira chithunzi chotsatira pa chikwatu chilichonse cholumikizidwa

Kulunzanitsa kwathunthu kwa zikwatu zogawana, zolumikizirana, makalendala pakati pa ma seva a Kerio Connect omwe adagawidwa

Mwachibadwa, sitifunika kusindikiza zikwatu zobwerezedwa.

Kulunzanitsa kwathunthu kwa zikwatu zogawana, zolumikizirana, makalendala pakati pa ma seva a Kerio Connect omwe adagawidwa

Pambuyo kubwereza kumachitika (ndipo palibe chapadera kubwereza pamenepo - zikwatu zilibe kanthu), ma seva a makalata akhoza kuyambitsidwa.

Kenako, mutha kudzaza imodzi mwama seva aimelo ndi data ndikuwonetsetsa kuti zomwe zalembedwazo zafotokozedwa bwino.

4. Ndodo

Kufotokozera kusinkhasinkha

Monga momwe mukuonera pambuyo pa kugwirizanitsa deta (DFS), ngati munapanga chinachake pa seva yoyamba, mwinamwake palibe chomwe chikuwonekera pa seva yachiwiri, kapena chikuwonekera koma mwinamwake osati nthawi zonse.

Osataya mtima; Inde, zidzawonekera posachedwa, koma bwino posachedwa. Chifukwa kwachedwa kwambiri mu 6 - 12 hours.

Chowonadi ndi chakuti mutangopanga chinachake pa seva yoyamba, pa seva yachiwiri ndi yotsatira, fayilo idzawonekera nthawi yomweyo chifukwa cha dongosolo la DFS, koma ngati makalata awa adawerengedwa kale ndi wina. ndipo afunsidwanso, seva sidzawerenganso chikwatu cha #msgs koma idzalavula deta kuchokera muzolemba zake, zomwe sizingagwirizanenso ndi zenizeni zathu.

Kerio ali ndi njira yowerengeranso ndondomekoyi, koma imatha kugwira ntchito pafupifupi maola asanu ndi limodzi, ndipo mkati mwa maola 6 amenewa kufunika kwa ntchitoyo mu kalendala kungakhale kotayika.
Kuti muyese kulunzanitsa pakali pano, mutha kufufuta fayiloyo mufoda yofananira index.fld, mutatha kulowanso chikwatu pa seva yamakalata ndipo ngati fayilo ikusowa, Kerio adzawerenganso bukhulo ndi datayo. zidzawoneka. Zingawonekere kuti ili ndi yankho, chotsani fayilo pamene deta ikusintha, koma izi sizikugwira ntchito nthawi zonse, koma nthawi yoyamba, ndiye Kerio pazifukwa zina amataya chidwi cha index.fld
Zimayambanso kulavula mauthenga omwe samvetsetseka kwa wogwiritsa ntchito - za mtundu wina wa index komanso kuti akuchita kale chinachake pamenepo.

Palinso njira ina, kupanga china chake - panthawi yopanga chinthu chatsopano, seva imazindikira mwadzidzidzi kuti dzina la fayilo lomwe limafuna kupereka latengedwa kale, koma ndi snowballs ndipo iyi ndi njira yomaliza.

Zikhala bwanji?

Ngati ife kulabadira kamodzinso chithunzi kuti kale bwino kwa ife.

Kulunzanitsa kwathunthu kwa zikwatu zogawana, zolumikizirana, makalendala pakati pa ma seva a Kerio Connect omwe adagawidwa

Koma pa ndege ina, mutha kuwona batani losangalatsa kwambiri lomwe tikufuna tsopano - Reindex zikwatu

Ndipo ndithudi. Ngati tidina batani ili pa seva yamakalata yomwe sikudziwa kuti china chake chasintha kale mu #msgs yolumikizidwa, tipeza zotsatira zokhazikika, zofulumira. Zonse zobisika zidzaonekera.

Mu chipikacho mutha kuwona momwe izi zimatenga nthawi yayitali; kwa ine ndi zolemba masauzande angapo (15 zikwi) zimatenga pafupifupi mphindi 3-4.

Zomwe tiyenera kuchita ndikuwona momwe tingakanire batani ili tikalifuna.

Zikukhalira Kerio ali nawo awo API

mafotokozedwe
Zolemba

Ntchito yomwe imagwira ntchito yathu ikuwoneka motere:
session = callMethod("Domains.checkPublicFoldersIntegrity",{}, token)

Kuchokera pazomwe tafotokozazi, tiyenera kulemba script yomwe ingayang'anire mawonekedwe a zikwatu zokondweretsa ndipo, ngati chinachake chasintha, chitani ntchito yomwe tikufuna.

Ndikufuna kunena kuti ndidalemba zolemba zingapo zosiyanasiyana zomwe zimayang'ana mosiyanasiyana, ndikukhazikika pa zomwe zimatengera ziganizo zonse kutengera kuchuluka kwa mafayilo.

Script kukhazikitsa

CMD script chitsanzo ndi kufotokozera

Re-index.bat

@echo off
set dir=%~dp0
%dir:~0,2%
CD "%~dp0"
md "%CD%LOG"
md "%CD%Setup"

ECHO -Start- >> "%CD%LOG%Computername%.log"
ECHO Start -> %Computername% %Date% %Time% >> "%CD%LOG%Computername%.log"

SetLocal EnableDelayedExpansion
for /f "UseBackQ Delims=" %%A IN ("%CD%Setup%Computername%.List") do (
  set /a c+=1
  set "m!c!=%%A"
)

set d=%c%
Echo Folder = %c%
ECHO Folder = %c% >> "%CD%LOG%Computername%.log"
ECHO.
ECHO. >> "%CD%LOG%Computername%.log"

:start
cls
if %c% LSS 1 exit
set /a id=1
set R=0

:Find
REM PF-Start
if "%id%" gtr "%c%" if %R% == 1 Goto Reindex 
if "%id%" gtr "%c%" timeout 60 && Goto start

For /F "tokens=1-3" %%a IN ('Dir "!m%id%!#msgs" /-C/S/A:-D') Do Set 2DirSize!id!=!DS!& Set DS=%%c
if "2DirSize!id!" == "" set 1DirSize!id!=!2DirSize%id%!

echo %id%
ECHO !m%id%!
echo Count        [ !1DirSize%id%! -- !2DirSize%id%! ]

if "!1DirSize%id%!" == "!2DirSize%id%!" ECHO Synk

REM DEL index.fld
if "!1DirSize%id%!" NEQ "!2DirSize%id%!" del /f /q !m%id%!index.fld && del /f /q !m%id%!indexlog.fld && del /f /q !m%id%!search.fld && set R=1 && ECHO RE-index Count && ECHO RE-index Count %Date% %Time% - Delete !m%id%! >> "%CD%LOG%Computername%.log"

set 1DirSize!id!=!2DirSize%id%!

ECHO.
ECHO.

set /a id+=1
goto Find

:Reindex
ECHO. >> "%CD%LOG%Computername%.log"
ECHO --- RE-INDEX - Start - %Date% %Time% --- >> "%CD%LOG%Computername%.log"
ECHO. >> ----------------------------------- >> "%CD%LOG%Computername%.log"
call PublicFolders.py
timeout 60
goto start

exit

Kope la script likuyenda pa seva iliyonse yamakalata (itha kugwiritsidwa ntchito ngati ntchito, ufulu wa Adm sufunikira)

Script imawerenga fayilo Setup%Computername%.List

Kumene %Computername% ndi dzina la seva yamakono (Buku likhoza kukhala ndi mndandanda wa maseva onse nthawi imodzi.)

Fayilo %Computername%.List - ili ndi njira zonse zamadulo olumikizidwa, njira iliyonse imalembedwa pamzere watsopano, ndipo sikuyenera kukhala ndi mizere yopanda kanthu.

Pambuyo poyambitsa koyamba, script imapanga ndondomeko ya ndondomeko, mosasamala kanthu kuti ndi yofunikira kapena ayi, ndipo script imapanganso ndondomeko ya chiwerengero cha mafayilo mu bukhu lililonse logwirizana.

Cholinga cha script ndikuwerengera mafayilo onse m'ndandanda yomwe yatchulidwa.

Pamapeto pa kuwerengera chikwatu chilichonse, ngati mu chikwatu chimodzi chiwerengero cha mafayilo sichikufanana ndi chaka chapitacho, script imachotsa mafayilo kuchokera ku mizu ya bukhu la makalata ogwirizanitsa: index.fld, indexlog.fld, search.fld ndikuyamba ndondomeko yolondolera mafoda omwe amagawana nawo.

Zambiri zokhudzana ndi magwiridwe antchito zimasiyidwa mu LOG ​​directory.

Ndondomeko ya indexing
Njira yolondolera imatsikira pakuchita ntchito ya Kerio API
Session = callMethod("Domains.checkPublicFoldersIntegrity",{}, chizindikiro)

Kukhazikitsa kwachitsanzo kumaperekedwa mu - python
PublicFolders.py

import json
import urllib.request
import http.cookiejar
""" Cookie storage is necessary for session handling """
jar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(jar))
urllib.request.install_opener(opener)
""" Hostname or ip address of your Kerio Control instance with protocol, port and credentials """

server = "http://127.0.0.1:4040"
username = "user"
password = "password"

def callMethod(method, params, token = None):
    """
    Remotely calls given method with given params.
    :param: method string with fully qualified method name
    :param: params dict with parameters of remotely called method
    :param: token CSRF token is always required except login method. Use method "Session.login" to obtain this token.
    """
    data =  {"method": method ,"id":1, "jsonrpc":"2.0", "params": params}

    req = urllib.request.Request(url = server + '/admin/api/jsonrpc/')
    req.add_header('Content-Type', 'application/json')
    if (token is not None):
        req.add_header('X-Token', token)    

    httpResponse = urllib.request.urlopen(req, json.dumps(data).encode())

    if (httpResponse.status == 200):
        body = httpResponse.read().decode()
        return json.loads(body)

session = callMethod("Session.login", {"userName":username, "password":password, "application":{"vendor":"Kerio", "name":"Control Api-Local", "version":"Python"}})
token = session["result"]["token"]
print (session)

session = callMethod("Domains.checkPublicFoldersIntegrity",{"domainId": "test2.local"}, token)
print (session)

callMethod("Session.logout",{}, token)

http://127.0.0.1:4040 mutha kuzisiya momwe zilili, koma ngati mukufuna HTTPS, python iyenera kudalira satifiketi ya Kerio.

Komanso mufayilo muyenera kutchula akaunti yomwe ili ndi ufulu wochita izi (Adm - mafoda apagulu) a seva yamakalata.

Ndikukhulupirira kuti nkhani yanga idzakhala yothandiza kwa olamulira a Kerio Connect.

Source: www.habr.com

Kuwonjezera ndemanga