Ti outsourcing ka pangwangunan (Bagian 1)

Halo sadayana, nami abdi Sergey Emelyanchik. Kami kapala perusahaan Audit-Telecom, pamekar utama sareng panulis sistem Veliam. Kuring mutuskeun pikeun nulis artikel ngeunaan kumaha babaturan kuring jeung kuring nyieun hiji parusahaan outsourcing, wrote software pikeun diri urang sorangan sarta salajengna mimiti ngadistribusikaeun ka dulur via sistem SaaS. Ngeunaan kumaha kuring categorically teu yakin yén ieu mungkin. Artikel bakal ngandung teu ukur carita, tapi ogé rinci teknis ngeunaan kumaha produk Veliam dijieun. Kaasup sababaraha potongan kode sumber. Abdi bakal nyarioskeun ka anjeun kasalahan naon anu urang lakukeun sareng kumaha urang ngalereskeunana engké. Aya mamang naha bakal nyebarkeun artikel sapertos. Tapi kuring panginten langkung saé ngalakukeun éta, kéngingkeun tanggapan sareng ningkatkeun, tibatan henteu nyebarkeun tulisan sareng mikirkeun naon anu bakal kajantenan upami ...

prasajarah

Kuring digawé di hiji pausahaan salaku pagawe IT. Pausahaan ieu cukup badag kalayan struktur jaringan éksténsif. Kuring moal Huni on tanggung jawab pakasaban abdi, abdi ngan bakal disebutkeun yen aranjeunna pasti teu kaasup ngembangkeun nanaon.

Urang tadi ngawaskeun, tapi murni kaluar tina kapentingan akademik kuring hayang nyobaan nulis basajan sorangan. Gagasan ieu: Abdi hoyong éta dina wéb, supados kuring gampang lebet tanpa masang klien sareng ningali naon anu lumangsung dina jaringan tina alat naon waé, kalebet alat sélulér liwat Wi-Fi, sareng kuring ogé leres-leres hayang gancang ngarti naon Aya parabot di rohangan nu geus jadi "mopey" sabab... aya syarat anu ketat pisan pikeun waktos ngaréspon kana masalah sapertos kitu. Hasilna, aya rencana anu dilahirkeun dina sirah kuring pikeun nyerat halaman wéb anu sederhana anu aya latar tukang jpeg sareng diagram jaringan, motong alat sorangan nganggo alamat IP na dina gambar ieu, sareng nunjukkeun eusi dinamis dina luhureun éta. gambar dina koordinat diperlukeun dina bentuk alamat IP héjo atawa kedip-kedip beureum. Tugas parantos diatur, hayu urang ngamimitian.

Saméméhna, kuring ieu programming di Delphi, PHP, JS na pisan superficially C ++. Kuring terang pisan kumaha jaringan jalan. VLAN, Routing (OSPF, EIGRP, BGP), NAT. Ieu cukup keur kuring nulis prototipe monitoring primitif sorangan.

Kuring nulis naon anu kuring rencanana dina PHP. Server Apache sareng PHP aya dina Windows sabab ... Linux pikeun kuring dina waktos éta mangrupikeun hal anu teu kaharti sareng rumit pisan, sabab tétéla engké, kuring salah pisan sareng di seueur tempat Linux langkung saderhana tibatan Windows, tapi ieu mangrupikeun topik anu misah sareng urang sadayana terang sabaraha holivars aya dina topik ieu. Windows tugas scheduler ditarik dina interval leutik (Kuring teu apal persis, tapi hal kawas sakali unggal tilu detik) Aksara PHP anu ngajajal sakabeh objék kalawan ping banal tur disimpen kaayaan ka file.

system(“ping -n 3 -w 100 {$ip_address}“); 

Leres, enya, damel sareng database dina waktos éta ogé henteu dikuasai pikeun kuring. Kuring henteu terang yén éta mungkin pikeun parallelize prosés, sareng ngalangkungan sadaya titik jaringan nyandak waktos anu lami, sabab ... ieu lumangsung dina hiji thread. Masalah utamana timbul nalika sababaraha titik teu sadia, sabab masing-masing nyangsang naskah pikeun 300 mdet. Di sisi klien aya fungsi looping basajan anu, dina interval sababaraha detik, diundeur informasi diropéa tina server kalawan pamundut AJAX tur diropéa panganteur. Nya, teras, saatos 3 ping anu gagal sakaligus, upami halaman wéb anu ngawaskeun dibuka dina komputer, komposisi anu riang dimaénkeun.

Nalika sadayana beres, kuring diideuan pisan ku hasilna sareng panginten kuring tiasa nambihan deui (kusabab pangaweruh sareng kamampuan kuring). Tapi kuring salawasna teu resep sistem kalawan sajuta grafik, nu kuring pikir lajeng, sarta masih mikir nepi ka poé ieu, teu perlu di hal nu ilahar. Abdi hoyong nempatkeun di dinya ukur naon anu bakal ngabantosan abdi dina padamelan abdi. Prinsip ieu tetep dasar pikeun ngembangkeun Veliam nepi ka poé ieu. Salajengna, kuring sadar yén éta bakal tiis pisan upami kuring henteu kedah tetep ngawaskeun kabuka sareng terang ngeunaan masalah, sareng nalika éta kajantenan, teras buka halamanna sareng tingali dimana titik jaringan masalah ieu lokasina sareng naon anu kudu dilakukeun sareng salajengna. . Kumaha bae kuring henteu maca email harita, kuring ngan saukur henteu ngagunakeunana. Kuring datang di sakuliah dina Internet nu aya SMS gateways nu Anjeun bisa ngirim hiji GET atanapi POST pamundut, sarta aranjeunna bakal ngirim SMS ka handphone kuring jeung téks nu kuring nulis. Kuring langsung sadar yén kuring hoyong pisan ieu. Sareng kuring mimiti diajar dokuméntasi. Saatos sababaraha waktos, kuring suksés, sareng ayeuna kuring nampi SMS ngeunaan masalah dina jaringan dina telepon sélulér kuring kalayan nami "obyek anu murag". Sanajan sistem éta primitif, ieu ditulis ku kuring sorangan, sarta hal pangpentingna anu ngamotivasi kuring pikeun ngembangkeun éta yén éta hiji program aplikasi nu bener mantuan kuring dina karya kuring.

Teras dinten sumping nalika salah sahiji saluran Internét turun di tempat damel, sareng ngawaskeun kuring henteu masihan terang ngeunaan éta. Kusabab Google DNS masih pinged sampurna. Waktosna pikeun mikir kumaha anjeun tiasa ngawas yén saluran komunikasi hirup. Aya ideu anu béda ngeunaan cara ngalakukeun ieu. Abdi henteu ngagaduhan aksés ka sadaya alat. Urang kedah terang kumaha ngartos saluran mana anu hirup, tapi henteu tiasa ningali kumaha waé dina alat jaringan éta. Lajeng batur sapagawean datang nepi ka gagasan yén mungkin yén jalur tracing ka server publik bisa béda gumantung kana saluran komunikasi anu ayeuna dipaké pikeun ngakses Internet. Kuring dipariksa sarta tétéla éta cara. Aya rute anu béda nalika ngalacak.

system(“tracert -d -w 500 8.8.8.8”);

Janten skrip anu sanés muncul, atanapi langkungna, pikeun sababaraha alesan, ngambah ieu ditambahkeun kana tungtung naskah anu sami, anu ping sadaya alat dina jaringan. Barina ogé, ieu mangrupikeun prosés panjang anu dieksekusi dina benang anu sami sareng ngalambatkeun karya sadayana naskah. Tapi lajeng éta teu jadi atra. Tapi hiji cara atanapi anu sanés, anjeunna ngalaksanakeun tugasna, kodeu ditetepkeun sacara ketat naon jinis pelacakan pikeun unggal saluran. Ieu kumaha sistem mimiti jalan, nu geus diawaskeun (ceuk nyaring, sabab euweuh kumpulan métrik, tapi ngan ping) alat jaringan (router, switch, wi-fi, jsb) jeung saluran komunikasi jeung dunya luar. . Pesen SMS sumping sacara teratur sareng diagramna sok jelas nunjukkeun dimana masalahna.

Saterusna, dina pagawean sapopoe kuring kungsi ngalakukeun cross-crossing. Na kuring bosen indit ka Cisco switch unggal waktu pikeun nempo nu panganteur ngagunakeun. Kumaha tiis éta bakal klik dina obyék dina ngawaskeun tur tingal daptar interfaces na kalawan déskripsi. Éta bakal ngahémat waktos kuring. Sumawona, dina skéma ieu henteu kedah ngajalankeun Putty atanapi SecureCRT pikeun ngalebetkeun akun sareng paréntah. Kuring ngan diklik dina ngawaskeun, nempo naon diperlukeun tur indit ka ngalakukeun pakasaban abdi. Kuring mimiti milarian cara pikeun berinteraksi sareng saklar. Kuring geuwat datang di sakuliah 2 pilihan: SNMP atanapi logging kana switch via SSH, ngasupkeun paréntah kuring diperlukeun tur parsing hasilna. Kuring mecat SNMP kusabab pajeulitna palaksanaanna; Abdi henteu sabar pikeun kéngingkeun hasilna. kalawan SNMP, anjeun bakal kudu ngagali kana MIB pikeun lila tur, dumasar kana data ieu, ngahasilkeun data ngeunaan interfaces. Aya tim éndah di CISCO

show interface status

Ieu nembongkeun kahayang Abdi peryogi pikeun cross-pameuntasan. Naha ganggu SNMP nalika kuring ngan ukur hoyong ningali kaluaran paréntah ieu, panginten. Sanggeus sababaraha waktu, kuring sadar kasempetan ieu. Diklik dina hiji obyék dina kaca wéb. Hiji kajadian dipicu ku nu klien AJAX ngahubungi server, sarta eta, kahareupna disambungkeun via SSH ka switch Abdi peryogi (Kapercayaan anu hardcoded kana kode, teu aya kahayang pikeun nyaring eta, nyieun sababaraha ménu misah dimana eta bakal mungkin pikeun ngarobah rekening ti panganteur nu , Kuring diperlukeun hasilna tur gancang) Kuring diasupkeun paréntah di luhur aya na dikirim deui ka browser nu. Janten kuring mimiti ningali inpormasi ngeunaan antarmuka kalayan hiji klik beurit. Ieu pisan merenah, utamana lamun anjeun kudu nempo inpo ieu dina switch béda sakaligus.

Ngawaskeun saluran dumasar-lacak tungtungna henteu janten ide anu pangsaéna, sabab ... sakapeung karya ieu dilumangsungkeun dina jaringan, sarta tracing bisa ngarobah sarta ngawaskeun mimiti ngajerit di kuring nu aya masalah sareng saluran. Tapi saatos nyéépkeun waktos pikeun nganalisa, kuring sadar yén sadaya saluran damel, sareng ngawaskeun kuring nipu kuring. Hasilna, kuring naros ka kolega kuring anu ngatur saklar pembentuk saluran pikeun ngirim kuring syslog nalika status pisibilitas tatanggana robih. Sasuai, éta langkung saderhana, langkung gancang sareng langkung akurat tibatan ngalacak. Hiji acara kawas tatangga leungit geus anjog, sarta kuring langsung ngaluarkeun bewara ngeunaan saluran handap.

Salajengna, sababaraha paréntah langkung muncul nalika ngaklik hiji obyék, sareng SNMP ditambahkeun pikeun ngumpulkeun sababaraha métrik, sareng éta dasarna. Sistim nu pernah dimekarkeun salajengna. Éta sadayana anu kuring peryogikeun, éta mangrupikeun alat anu saé. Seueur pamiarsa sigana bakal nyarioskeun ka kuring yén parantos aya seueur parangkat lunak dina Internét pikeun ngabéréskeun masalah ieu. Tapi kanyataanna, kuring henteu google produk gratis sapertos kitu sareng kuring leres-leres hoyong ngembangkeun kaahlian program kuring, sareng naon cara anu langkung saé pikeun nyorong ieu tibatan masalah aplikasi anu nyata. Dina titik ieu, versi munggaran ngawaskeun parantos réngsé sareng henteu deui dirobih.

Nyiptakeun perusahaan Audit-Telecom

Lila-lila, kuring mimiti digawé paruh waktu di pausahaan séjén, untungna jadwal gawé kuring ngidinan kuring pikeun ngalakukeun ieu. Nalika anjeun damel di perusahaan anu béda-béda, kaahlian anjeun dina sagala rupa daérah tumbuh gancang pisan, sareng cakrawala anjeun berkembang saé. Aya pausahaan nu, sabab nyebutkeun, anjeun Swédia, a reaper, sarta pamuter tarompet. Di hiji sisi, hese, di sisi anu sanésna, upami anjeun henteu puguh, anjeun janten generalis sareng ieu ngamungkinkeun anjeun pikeun ngabéréskeun masalah langkung gancang sareng langkung éfisién sabab anjeun terang kumaha widang anu aya hubunganana.

Babaturan kuring Pavel (ogé spesialis IT) teras-terasan ngadorong kuring pikeun ngamimitian bisnisna sorangan. Aya ideu anu teu kaétang kalayan variasi anu béda-béda naon anu aranjeunna lakukeun. Ieu parantos dibahas mangtaun-taun. Sarta dina tungtungna, eta teu kudu datang ka nanaon sabab Kami skeptic a, sarta Pavel mangrupakeun ngalamun. Unggal waktos anjeunna ngajukeun ide, abdi salawasna teu percanten ka dinya sarta nampik ilubiung. Tapi urang bener-bener hayang muka usaha sorangan.

Tungtungna, urang tiasa mendakan pilihan anu cocog sareng urang sareng ngalakukeun naon anu urang terang kumaha laksanakeun. Dina 2016, urang mutuskeun pikeun nyieun hiji pausahaan IT nu bakal nulungan usaha ngajawab masalah IT. Ieu mangrupikeun panyebaran sistem IT (1C, server terminal, server mail, sareng sajabana), pangropéa na, HelpDesk klasik pikeun pangguna sareng administrasi jaringan.

Terus terang diomongkeun, dina waktu nyieun pausahaan, abdi teu percanten ka eta ngeunaan 99,9%. Tapi kumaha waé Pavel tiasa ngajantenkeun kuring nyobian, sareng ningali payun, anjeunna leres. Pavel na I chipped di 300 rubles unggal, didaptarkeun a LLC anyar "Audit-Telecom", nyéwa kantor leutik, dijieun kartu bisnis tiis, ogé, sacara umum, kawas meureun paling inexperienced, pangusaha novice, sarta mimiti néangan klien. Pananjung klien mangrupakeun carita lengkep beda. Panginten urang bakal nyerat tulisan anu misah salaku bagian tina blog perusahaan upami aya anu kabetot. Telepon tiis, flyers, jsb. Ieu teu masihan hasil nanaon. Nalika kuring maca ayeuna tina seueur carita ngeunaan bisnis, hiji cara atanapi anu sanés, seueur gumantung kana nasib. Kami untung. sarta sacara harfiah sababaraha minggu sanggeus kreasi pausahaan, lanceukna kuring Vladimir ngadeukeutan kami, anu mawa kami klien munggaran. Abdi moal ngabosenkeun anjeun kalayan detil damel sareng klien, éta sanés perkawis tulisan éta, kuring ngan ukur nyarios yén urang badé audit, ngaidentipikasi daérah kritis sareng daérah-daérah ieu rusak nalika kaputusan dilakukeun naha cooperate kalawan kami on hiji basis lumangsung salaku outsourcers. Saatos ieu, kaputusan positif langsung dilakukeun.

Lajeng, utamana ngaliwatan kecap tina sungut ngaliwatan babaturan, pausahaan jasa lianna mimiti muncul. Helpdesk aya dina hiji sistem. Sambungan ka alat jaringan sareng server béda, atanapi rada béda. Sababaraha urang nyimpen potong kompas, batur nganggo buku alamat RDP. Ngawaskeun nyaéta sistem anu misah. Hal ieu kacida merenah pikeun tim pikeun digawé dina sistem disparate. Inpo penting leungit tetempoan. Nya, contona, server terminal klien janten teu sayogi. Aplikasi ti pangguna klien ieu langsung ditampi. Spesialis pangrojong muka pamundut (ditampi ku telepon). Upami kajadian sareng pamundut kadaptar dina hiji sistem, maka spesialis pangrojong bakal langsung ningali naon masalahna pangguna sareng nyarioskeun ka anjeunna ngeunaan éta, bari sakaligus nyambung ka objék anu diperyogikeun pikeun ngabéréskeun kaayaan éta. Sarerea sadar kana kaayaan taktis sareng tiasa dianggo sacara harmonis. Kami henteu mendakan sistem dimana sadayana ieu digabungkeun. Janten jelas yén éta waktuna ngadamel produk urang sorangan.

Terus dianggo dina sistem pangimeutan anjeun

Éta jelas yén sistem anu ditulis sateuacana henteu cocog pikeun tugas ayeuna. Boh tina segi fungsionalitas atanapi tina segi kualitas. Sarta eta ieu mutuskeun pikeun nulis sistem ti scratch. Sacara grafis kedah katingalina béda pisan. Éta kedah janten sistem hirarki supados tiasa gancang sareng gampang muka objék anu pas pikeun klien anu leres. Skéma sapertos dina versi munggaran leres-leres henteu leres dina kasus ayeuna, sabab Klién béda-béda sareng henteu masalah pisan dimana tempatna alat éta. Ieu parantos dialihkeun kana dokuméntasi.

Ku kituna, tugas:

  1. Struktur hirarki;
  2. Sababaraha jenis bagian server nu bisa ditempatkeun dina enggon klien dina bentuk mesin virtual pikeun ngumpulkeun metrics urang kudu jeung ngirim ka server sentral, nu bakal nyimpulkeun sadaya ieu jeung mintonkeun ka urang;
  3. Siaga. Anu teu tiasa dileungitkeun, sabab ... waktu éta teu mungkin keur batur diuk na ngan kasampak dina monitor;
  4. Sistem aplikasi. Klién mimiti muncul pikeun saha kami serviced teu ukur server jeung alat jaringan, tapi ogé workstations;
  5. Kamampuhan pikeun gancang nyambung ka server sareng alat tina sistem;

Tugas geus diatur, urang ngawitan nulis. Sapanjang jalan, ngolah requests ti klien. Waktu éta geus aya 4 urang. Urang mimitian nulis duanana bagian sakaligus: server sentral jeung server pikeun instalasi ka klien. Ku titik ieu, Linux Ubuntu geus euweuh muhrim ka kami sarta ieu mutuskeun yén mesin virtual nu klien bakal boga bakal on Debian. Moal aya installers, urang ngan bakal nyieun proyék bagian server dina hiji mesin virtual husus, lajeng urang ngan bakal clone ka klien nu dipikahoyong. Ieu kasalahan sejen. Engké éta jelas yén dina skéma sapertos mékanisme update ieu sagemblengna undeveloped. Jelema. kami nambahkeun sababaraha fitur anyar, lajeng aya sakabeh masalah ngadistribusikaeun ka sadaya server klien, tapi urang bakal datang deui ka ieu engké, sagalana dina urutan.

Urang nyieun prototipe munggaran. Anjeunna tiasa ping alat jaringan klien sareng server anu kami peryogikeun sareng ngirim data ieu ka server sentral kami. Sarta anjeunna, kahareupna diropéa data ieu bulk dina server sentral. Di dieu kuring baris nulis teu ukur carita ngeunaan kumaha jeung naon éta suksés, tapi ogé naon kasalahan amatir dijieun na kumaha engké kuring kudu mayar eta kalawan waktu. Ku kituna, sakabéh tangkal objék ieu disimpen dina hiji file tunggal dina wangun objék serialized. Bari urang disambungkeun sababaraha klien kana sistem, sagalana éta leuwih atawa kirang normal, sanajan kadang aya sababaraha artefak anu sagemblengna teu kaharti. Tapi nalika urang nyambungkeun belasan server kana sistem, mujijat mimiti lumangsung. Sakapeung, pikeun sababaraha alesan anu teu dipikanyaho, sadaya objék dina sistem ngan saukur ngaleungit. Kadé dicatet di dieu yén server anu klien geus dikirim data ka server sentral unggal sababaraha detik via pamundut POST. Pamiarsa anu ati-ati sareng programer anu berpengalaman parantos ngaduga yén aya masalah sababaraha aksés kana file pisan dimana objék serialisasi disimpen tina benang anu béda dina waktos anu sami. Sareng nalika ieu kajantenan, kaajaiban kajantenan kalayan ngaleungitkeun objék. Koropakna ngan saukur kosong. Tapi kabeh ieu teu kapanggih langsung, tapi ngan salila operasi kalawan sababaraha server. Antukna, pungsionalitas scanning port ditambahkeun (server dikirim ka sentral teu ngan informasi ngeunaan kasadiaan alat, tapi ogé ngeunaan palabuhan dibuka on aranjeunna). Hal ieu dilakukeun ku nelepon paréntah:

$connection = @fsockopen($ip, $port, $errno, $errstr, 0.5);

hasilna sering lepat sareng scan nyandak waktos anu lami kanggo réngsé. Abdi hilap pisan ngeunaan ping, éta dilakukeun ku fping:

system("fping -r 3 -t 100 {$this->ip}");

Ieu ogé henteu paralel sareng ku kituna prosésna panjang pisan. Engké, sakabéh daptar alamat IP diperlukeun pikeun verifikasi dikirim ka fping sakaligus, sarta balik kami nampi daptar siap-dijieun jalma anu ngabales. Teu kawas urang, fping éta bisa parallelize prosés.

Pagawean rutin anu sanés nyaéta nyetél sababaraha jasa via WEB. Nya, contona, ECP ti MS Exchange. Dasarna éta ngan ukur tautan. Sarta kami mutuskeun yén urang kudu bisa nambahkeun tumbu misalna langsung ka sistem, ku kituna teu kudu néangan dina dokuméntasi atawa tempat sejenna dina tetengger pikeun kumaha carana ngakses ECP of a klien husus. Ieu kumaha konsép link sumberdaya pikeun sistem mucunghul, fungsionalitas maranéhanana geus sadia nepi ka poé ieu sarta teu robah, ogé, ampir.

Kumaha Tumbu sumberdaya jalan di Veliam
Ti outsourcing ka pangwangunan (Bagian 1)

sambungan jauh

Ieu naon anu katingali dina aksi dina versi Veliam ayeuna
Ti outsourcing ka pangwangunan (Bagian 1)

Salah sahiji tugasna nyaéta nyambungkeun gancang sareng gampang kana server, anu parantos seueur (leuwih ti saratus) sareng nyortir jutaan potong kompas RDP anu tos disimpen pisan henteu pikaresepeun. Hiji alat diperlukeun. Aya software dina Internét anu mangrupa hal kawas buku alamat pikeun sambungan RDP misalna, tapi maranéhna teu terpadu jeung sistem ngawaskeun, sarta akun teu bisa disimpen. Lebetkeun akun pikeun klien anu béda unggal waktos nyaéta naraka murni nalika anjeun nyambungkeun puluhan kali sadinten ka server anu béda. Kalayan SSH, hal-hal langkung saé; aya seueur parangkat lunak anu saé anu ngamungkinkeun anjeun ngatur sambungan sapertos kana polder sareng émut kana rekening ti aranjeunna. Tapi aya 2 masalah. Anu kahiji nyaéta yén kami henteu mendakan program tunggal pikeun sambungan RDP sareng SSH. Nu kadua nyaéta lamun di sawatara titik kuring teu di komputer kuring jeung kuring kudu gancang nyambung, atawa kuring ngan reinstalled sistem, Kuring kudu lebet kana dokuméntasi pikeun katingal dina akun ti klien ieu. Ieu teu merenah tur runtah waktu.

Struktur hirarki anu kami diperyogikeun pikeun server klien parantos sayogi dina produk internal kami. Kuring ngan ukur kedah terang kumaha ngagantelkeun sambungan gancang kana alat anu diperyogikeun di dinya. Pikeun ngamimitian, sahenteuna dina jaringan anjeun.

Nyandak kanyataan yén klien dina sistem kami mangrupikeun panyungsi anu henteu ngagaduhan aksés kana sumber daya lokal komputer, pikeun ngan saukur ngaluncurkeun aplikasi anu kami peryogikeun ku sababaraha paréntah, éta diciptakeun pikeun ngalakukeun sadayana ngalangkungan "Windows". skéma url khusus". Ieu kumaha "plugin" tangtu muncul pikeun sistem kami, anu ngan saukur kalebet Putty sareng Remote Desktop Plus sareng, nalika instalasi, kantun ngadaptarkeun skéma URI dina Windows. Ayeuna, nalika urang hoyong nyambung ka hiji obyék via RDP atanapi SSH, urang diklik Peta ieu dina sistem urang jeung Custom URI digawé. Standar mstsc.exe diwangun kana Windows atanapi putty, anu mangrupikeun bagian tina "plugin," diluncurkeun. Kuring nempatkeun kecap plugin dina tanda petik sabab ieu lain plugin browser dina rasa klasik.

Sahenteuna éta hal. Buku alamat merenah. Sumawona, dina kasus Putty, sadayana umumna saé; éta tiasa dipasihan sambungan IP, login sareng kecap akses salaku parameter input. Jelema. Kami parantos nyambung ka server Linux dina jaringan kami kalayan hiji klik tanpa ngalebetkeun kecap akses. Tapi kalayan RDP éta henteu saderhana. Mstsc standar teu tiasa nyayogikeun kredensial salaku parameter. Jauh Desktop Plus sumping ka nyalametkeun teh. Anjeunna diwenangkeun ieu lumangsung. Ayeuna urang tiasa ngalakukeun tanpa éta, tapi pikeun lila éta asisten satia dina sistem urang. Kalayan situs HTTP (S) sadayana saderhana, obyék sapertos kitu ngan ukur dibuka dina browser sareng éta. Merenah tur praktis. Tapi ieu kabagjaan ukur dina jaringan internal.

Kusabab urang ngarengsekeun seuseueurna masalah tina jarak jauh ti kantor, hal anu paling gampang nyaéta nyayogikeun VPN pikeun klien. Teras anjeun tiasa nyambung ka aranjeunna tina sistem kami. Tapi éta kénéh rada teu merenah. Pikeun unggal klien, éta diperlukeun pikeun nyimpen hiji kebat tina sambungan VPN inget dina unggal komputer, sarta saméméh nyambungkeun ka sagala, perlu pikeun ngaktipkeun VPN pakait. Kami nganggo solusi ieu kanggo waktos anu lami. Tapi jumlah klien naek, jumlah VPN ogé ngaronjat, sarta sakabeh ieu mimiti galur jeung hal anu kudu dipigawé ngeunaan eta. Cimata khususna sumping ka panon kuring saatos masang deui sistem, nalika kuring kedah ngalebetkeun deui puluhan sambungan VPN dina profil Windows énggal. Ngeureunkeun nempatkeun up kalawan ieu, ceuk kuring, sarta mimiti mikir ngeunaan naon bisa I do ngeunaan eta.

Éta kajadian yén sadaya klien ngagaduhan alat tina perusahaan anu terkenal Mikrotik salaku router. Éta pisan hanca sarta merenah pikeun ngajalankeun ampir sagala tugas. downside nyaeta aranjeunna "dibajak". Kami ngarengsekeun masalah ieu ngan saukur ku nutup sadaya aksés ti luar. Tapi éta kedah kumaha waé aksés ka aranjeunna tanpa sumping ka tempat klien, sabab ... éta panjang. Urang ngan saukur nyieun torowongan pikeun unggal Mikrotik sapertos sareng misahkeun kana kolam renang anu misah. tanpa routing, supados teu aya sambungan jaringan anjeun sareng jaringan klien sareng jaringanna saling.

Gagasan ieu dilahirkeun pikeun mastikeun yén nalika kuring ngaklik obyék anu kuring butuhkeun dina sistem, server ngawaskeun sentral, terang kana akun SSH sadaya klien Mikrotik, nyambung ka anu dipikahoyong, nyiptakeun aturan diteruskeun ka host anu dipikahoyong sareng port diperlukeun. Aya sababaraha titik di dieu. Solusina henteu universal - éta ngan ukur tiasa dianggo pikeun Mikrotik, sabab sintaksis paréntah béda pikeun sadaya router. Ogé, penerusan sapertos kitu kedah kumaha waé dihapus, sareng bagian server tina sistem kami dasarna henteu tiasa ngalacak ku cara naon waé naha kuring parantos réngsé sési RDP kuring. sumur, diteruskeun sapertos liang pikeun klien. Tapi kami henteu ngudag universalitas, sabab ... produk ieu ngan dipaké dina parusahaan urang jeung teu aya pikiran ngaleupaskeun ka umum.

Unggal masalah direngsekeun ku cara sorangan. Nalika aturan dijieun, diteruskeun ieu ngan sadia pikeun hiji alamat IP éksternal husus (ti mana sambungan ieu initialized). Ku kituna liang kaamanan ieu dihindari. Tapi kalawan unggal sambungan misalna, aturan Mikrotik ditambahkeun kana kaca NAT na teu diberesihan. Sareng sadayana terang yén langkung seueur aturan, langkung seueur prosésor router anu dimuat. Sareng sacara umum, kuring henteu tiasa nampi yén hiji dinten kuring bakal angkat ka sababaraha Mikrotik, sareng bakal aya ratusan maot, aturan anu teu aya gunana.

Kusabab server urang teu bisa ngalacak status sambungan, hayu Mikrotik ngalacak aranjeunna sorangan. Sareng kuring nyerat naskah anu terus-terusan ngawaskeun sadaya aturan diteruskeun kalayan pedaran khusus sareng pariksa naha sambungan TCP ngagaduhan aturan anu cocog. Upami teu acan aya kanggo sababaraha waktos, maka sambunganna sigana parantos réngsé sareng diteruskeun ieu tiasa dihapus. Sagalana digawé kaluar, naskah digawé ogé.

Ku jalan kitu, ieu téh:

global atmonrulecounter {"dontDelete"="dontDelete"}
:foreach i in=[/ip firewall nat find comment~"atmon_script_main"] do={ 
	local dstport [/ip firewall nat get value-name="dst-port" $i]
	local dstaddress [/ip firewall nat get value-name="dst-address" $i]
	local dstaddrport "$dstaddress:$dstport"
	#log warning message=$dstaddrport
	local thereIsCon [/ip firewall connection find dst-address~"$dstaddrport"]
	if ($thereIsCon = "") do={
		set ($atmonrulecounter->$dstport) ($atmonrulecounter->$dstport + 1)
		#:log warning message=($atmonrulecounter->$dstport)
		if (($atmonrulecounter->$dstport) > 5) do={
			#log warning message="Removing nat rules added automaticaly by atmon_script"
			/ip firewall nat remove [/ip firewall nat find comment~"atmon_script_main_$dstport"]
			/ip firewall nat remove [/ip firewall nat find comment~"atmon_script_sub_$dstport"]
			set ($atmonrulecounter->$dstport) 0
		}
	} else {
		set ($atmonrulecounter->$dstport) 0
	}
}

Pasti eta bisa geus dijieun leuwih geulis, gancang, jeung sajabana, tapi digawé, teu ngamuat Mikrotik sarta ngalakukeun hiji pakasaban alus teuing. Kami tungtungna tiasa nyambung ka server klien sareng alat jaringan kalayan ngan ukur hiji klik. Tanpa muka VPN atanapi ngasupkeun kecap akses. Sistim nu geus jadi bener merenah pikeun digawekeun ku. Waktos jasa dikirangan, sareng urang sadayana nyéépkeun waktos damel tinimbang nyambungkeun kana objék anu diperyogikeun.

Nyadangkeun Mikrotik

Urang ngonpigurasi cadangan sadaya Mikrotik ka FTP. Jeung sakabéh sagalana éta rupa. Tapi nalika anjeun kedah kéngingkeun cadangan, anjeun kedah muka FTP ieu sareng milarian di dinya. Kami gaduh sistem dimana sadaya router disambungkeun; urang tiasa komunikasi sareng alat liwat SSH. Naha urang henteu ngajantenkeun sistem éta nyalira nyandak cadangan tina sadaya Mikrotik sapopoé, panginten. Sarta anjeunna mimiti nerapkeun eta. Urang disambungkeun, nyieun cadangan tur nyandak ka gudang.

Kode skrip dina PHP pikeun nyandak cadangan tina Mikrotik:

<?php

	$IP = '0.0.0.0';
	$LOGIN = 'admin';
	$PASSWORD = '';
	$BACKUP_NAME = 'test';

    $connection = ssh2_connect($IP, 22);

    if (!ssh2_auth_password($connection, $LOGIN, $PASSWORD)) exit;

    ssh2_exec($connection, '/system backup save name="atmon" password="atmon"');
    stream_get_contents($connection);
    ssh2_exec($connection, '/export file="atmon.rsc"');
    stream_get_contents($connection);
    sleep(40); // Waiting bakup makes

    $sftp = ssh2_sftp($connection);

    // Download backup file
    $size = filesize("ssh2.sftp://$sftp/atmon.backup");
    $stream = fopen("ssh2.sftp://$sftp/atmon.backup", 'r');
    $contents = '';
    $read = 0;
    $len = $size;
    while ($read < $len && ($buf = fread($stream, $len - $read))) {
        $read += strlen($buf);
        $contents .= $buf;
    }
    file_put_contents ($BACKUP_NAME . ‘.backup’,$contents);
    @fclose($stream);

    sleep(3);
    // Download RSC file
    $size = filesize("ssh2.sftp://$sftp/atmon.rsc");
    $stream = fopen("ssh2.sftp://$sftp/atmon.rsc", 'r');
    $contents = '';
    $read = 0;
    $len = $size;
    while ($read < $len && ($buf = fread($stream, $len - $read))) {
        $read += strlen($buf);
        $contents .= $buf;
    }
    file_put_contents ($BACKUP_NAME . ‘.rsc’,$contents);
    @fclose($stream);

    ssh2_exec($connection, '/file remove atmon.backup');
    ssh2_exec($connection, '/file remove atmon.rsc');

?>

Cadangan dicokot dina dua bentuk - binér jeung téks config. Binér mantuan pikeun gancang balikkeun config diperlukeun, sarta téks hiji ngidinan Anjeun pikeun ngarti naon anu kudu dipigawé lamun aya ngagantian kapaksa alat jeung binér teu bisa diunggah ka dinya. Hasilna, urang ngagaduhan fungsionalitas anu sanés dina sistem. Sumawona, nalika nambihan Mikrotik énggal, henteu kedah ngonpigurasikeun naon waé; Kuring ngan saukur nambihan obyék kana sistem sareng nyetél akunna liwat SSH. Lajeng sistem sorangan ngurus nyokot cadangan. Versi ayeuna SaaS Veliam teu acan gaduh pungsi ieu, tapi urang bakal port eta geura-giru.

Potret layar ngeunaan naon anu katingali dina sistem internal
Ti outsourcing ka pangwangunan (Bagian 1)

Transisi ka gudang database normal

Kuring geus nulis di luhur yén artefak mucunghul. Kadang-kadang sakabéh daptar objék dina sistem saukur ngiles, sakapeung nalika ngédit hiji obyék, informasi teu disimpen sarta objék kudu diganti tilu kali. Ieu ngaganggu sadayana pisan. Leungitna objék jarang lumangsung, sareng gampang dibalikeun ku ngabalikeun file ieu, tapi gagal nalika ngédit objék sering kajantenan. Meureun, kuring mimitina teu ngalakukeun ieu ngaliwatan database sabab teu pas dina pikiran kuring kumaha ieu mungkin pikeun nyimpen hiji tangkal kalayan sagala sambungan dina tabel datar. Éta datar, tapi tangkalna hierarkis. Tapi leyuran alus keur sababaraha aksés, sarta salajengna (sakumaha sistem jadi leuwih kompleks) transactional, nyaeta DBMS a. Abdi sigana sanés anu munggaran ngalaman masalah ieu. Kuring mimiti googling. Tétéla yén sagalana geus nimukeun saméméh kuring jeung aya sababaraha algoritma nu ngawangun tangkal tina méja datar. Sanggeus nempo masing-masing, kuring ngalaksanakeun salah sahijina. Tapi ieu parantos versi anyar tina sistem, sabab ... Nyatana, kusabab ieu, kuring kedah nyerat deui seueur pisan. Hasilna éta alam, masalah kabiasaan acak tina sistem indit. Sababaraha bisa disebutkeun yen kasalahan pisan amatir (Skrip single-threaded, nyimpen informasi nu diakses sababaraha kali sakaligus tina threads béda dina file, jsb) dina widang ngembangkeun software. Panginten ieu leres, tapi padamelan utama kuring nyaéta administrasi, sareng pemrograman mangrupikeun hustle pikeun jiwa kuring, sareng kuring ngan saukur teu gaduh pangalaman damel di tim programer, dimana hal-hal dasar sapertos kitu bakal langsung disarankeun ku senior kuring. babaturan. Ku alatan éta, kuring ngeusi sagala nabrak ieu sorangan, tapi kuring diajar bahan kacida alusna. Sareng ogé, padamelan abdi ngalibatkeun rapat sareng klien, tindakan anu ditujukeun pikeun ngamajukeun perusahaan, seueur masalah administrasi dina perusahaan, sareng seueur deui. Tapi hiji cara atawa sejen, naon geus aya dina paménta. The guys jeung kuring sorangan ngagunakeun produk dina karya urang sapopoé. Terus terang aya ide sareng solusi anu teu hasil dina waktosna dibuang, tapi tungtungna janten jelas yén ieu sanés alat anu tiasa dianggo sareng teu aya anu nganggo éta sareng henteu dugi ka Veliam.

Helpdesk - Helpdesk

Éta moal salah nyebut kumaha HelpDesk dibentuk. Ieu carita sagemblengna béda, sabab ... dina Veliam ieu geus 3rd versi lengkep anyar, nu béda ti sakabeh saméméhna. Ayeuna éta sistem basajan, intuitif tanpa bells perlu jeung whistles, kalawan kamampuhan pikeun ngahijikeun jeung domain a, kitu ogé kamampuhan pikeun ngakses profil pamaké sarua ti mana wae maké link ti surelek. Sareng anu paling penting, anjeun tiasa nyambung ka pelamar via VNC ti mana waé (di bumi atanapi di kantor) langsung tina aplikasi tanpa VPN atanapi port diteruskeun. Kuring bakal nyaritakeun kumaha urang dugi ka ieu, naon anu kajantenan sateuacanna sareng naon kaputusan anu parah dilakukeun.

Kami nyambung ka pangguna ngalangkungan TeamViewer anu terkenal. Sadaya komputer anu pangguna anu kami layani parantos dipasang TV. Hal kahiji urang ngalakukeun salah, sarta salajengna dihapus eta, ieu linking unggal klien HD pikeun hardware. Kumaha pamaké asup kana sistem HD pikeun ninggalkeun pamundut a? Salian ti TV, sarerea kungsi utilitas husus dipasang dina komputer maranéhanana, ditulis dina Lasarus (loba jalma di dieu bakal gulung panon maranéhanana, komo meureun buka Google naon éta, tapi basa disusun pangalusna kuring terang éta Delphi, sarta Lasarus ampir. hal anu sarua, ngan gratis). Sacara umum, pangguna ngaluncurkeun file batch khusus anu ngaluncurkeun utiliti ieu, anu giliran maca HWID sistem sareng saatos éta browser diluncurkeun sareng otorisasina lumangsung. Naha ieu dilakukeun? Di sababaraha perusahaan, jumlah pangguna anu dilayanan diitung masing-masing, sareng harga jasa pikeun unggal bulan dumasar kana jumlah jalma. Ieu kaharti, ceuk anjeun, tapi naha éta dihijikeun ka hardware? Saderhana pisan, sababaraha jalma sumping ka bumi sareng ngadamel pamundut ti laptop bumina dina gaya "nyieun sadayana saé pikeun kuring di dieu." Salian maca sistem HWID, utilitas narik ID Teamviewer ayeuna tina pendaptaran sareng ogé dikirimkeun ka kami. Teamviewer boga API pikeun integrasi. Sarta kami ngalakukeun integrasi ieu. Tapi aya hiji nyekel. Ngaliwatan API ieu, mustahil pikeun nyambung ka komputer pamaké nalika anjeunna teu eksplisit initiate sési ieu sarta sanggeus nyoba nyambung ka dinya, anjeunna ogé kudu klik "konfirmasi". Dina waktos éta, sigana logis pikeun urang yén teu aya anu kedah nyambungkeun tanpa pamenta pangguna, sareng saprak jalma éta aya dina komputer, anjeunna bakal ngamimitian sési sareng ngabales satuju kana pamundut sambungan jauh. Sagalana tétéla salah. Ngalamar hilap pencét ngamimitian sési, sareng kedah nyarioskeun éta dina paguneman telepon. Ieu ngabuang waktos sareng frustrating dina dua sisi prosés. Leuwih ti éta, teu ilahar keur moments misalna nalika hiji jalma ninggalkeun pamundut a, tapi diwenangkeun pikeun nyambungkeun ngan nalika anjeunna ninggalkeun pikeun dahar beurang. Kusabab masalahna henteu kritis sareng anjeunna henteu hoyong prosés padamelanna diganggu. Sasuai, anjeunna moal mencet sagala tombol pikeun ngidinan sambungan. Ieu kumaha fungsionalitas tambahan muncul nalika asup kana HelpDesk - maca ID Teamviewer. Urang terang sandi permanén anu dianggo nalika masang Teamviewer. Langkung tepatna, ngan ukur sistem anu terang éta, sabab éta diwangun kana pamasang sareng kana sistem kami. Sasuai, aya tombol sambungan tina aplikasi ku ngaklik nu teu kudu ngadagoan nanaon, tapi Teamviewer geuwat dibuka sarta sambungan lumangsung. Hasilna, aya dua jenis sambungan mungkin. Ngaliwatan API Teamviewer resmi sareng anu urang damel sorangan. Pikeun reuwas kuring, aranjeunna lirén nganggo anu munggaran ampir langsung, sanaos aya petunjuk pikeun ngagunakeun éta ngan ukur dina kasus khusus sareng nalika pangguna nyalira masihan payuneunana. Masih, pasihan abdi kaamanan ayeuna. Tapi tétéla yén pelamar henteu peryogi ieu. Éta sadayana leres pisan sareng disambungkeun ka aranjeunna tanpa tombol konfirmasi.

Pindah ka multithreading dina Linux

Soal nyepetkeun panyeken jaringan pikeun kabuka daptar palabuhan anu parantos ditangtukeun sareng ping saderhana objék jaringan parantos lami timbul. Di dieu, tangtosna, solusi anu munggaran anu aya dina pikiran nyaéta multithreading. Kusabab waktos utama anu dihabiskeun pikeun ping ngantosan pakét dipulangkeun, sareng ping salajengna henteu tiasa ngamimitian dugi ka pakét sateuacana dipulangkeun, di perusahaan anu ngagaduhan 20+ server sareng alat jaringan, ieu parantos damel rada laun. Intina nyaéta yén hiji pakét tiasa ngaleungit, tapi ulah langsung ngabéjaan administrator sistem ngeunaan éta. Anjeunna ngan saukur bakal eureun narima spam sapertos pisan gancang. Ieu ngandung harti yén anjeun kudu ping unggal objék leuwih ti sakali saméméh nyieun kacindekan ngeunaan inaccessibility. Tanpa seueur teuing detil, perlu pikeun parallelize sabab upami ieu henteu dilakukeun, maka paling dipikaresep administrator sistem bakal diajar ngeunaan masalah tina klien, sanés tina sistem ngawaskeun.

PHP sorangan henteu ngadukung multithreading out of the box. Sanggup multiprocessing, anjeun tiasa garpu. Tapi, kanyataanna, kuring parantos nyerat mékanisme polling sareng kuring hoyong ngadamelna supados kuring sakali-kali ngitung sadaya titik anu kuring peryogikeun tina pangkalan data, ping sadayana sakaligus, ngantosan réspon ti masing-masing sareng saatos éta langsung nyerat. datana. Ieu ngaheéat dina jumlah requests dibaca. Multithreading pas pisan kana ide ieu. Pikeun PHP aya modul PThreads nu ngidinan Anjeun pikeun ngalakukeun multithreading nyata, sanajan eta nyandak jumlah adil tinkering pikeun nyetél ieu dina PHP 7.2, tapi ieu dipigawé. Scanning port sareng ping ayeuna gancang. Jeung tinimbang, contona, 15 detik per puteran saméméhna, prosés ieu mimiti nyandak 2 detik. Ieu hasil alus.

Inok gancang pausahaan anyar

Kumaha pungsionalitasna pikeun ngumpulkeun rupa-rupa métrik sareng ciri hardware? Ieu basajan. Sakapeung urang ngan ukur dititah pikeun ngaudit infrastruktur IT ayeuna. Nya, hal anu sami diperyogikeun pikeun nyepetkeun pamariksaan klien énggal. Urang diperlukeun hiji hal anu bakal ngidinan urang datang ka parusahaan sedeng atawa badag tur gancang angka kaluar naon maranéhna mibanda. Dina pamanggih kuring, ping dina jaringan internal diblokir ngan ku jalma anu hoyong ngahesekeun kahirupan sorangan, sarta dina pangalaman urang aya sababaraha di antarana. Tapi aya ogé jalma sapertos kitu. Sasuai, anjeun tiasa gancang nyeken jaringan pikeun ayana alat sareng ping saderhana. Teras urang tiasa nambihanana sareng nyeken palabuhan kabuka anu dipikaresep ku urang. Nyatana, fungsionalitas ieu parantos aya; éta ngan ukur kedah nambihan paréntah ti server sentral ka budak supados tiasa nyeken jaringan anu ditangtukeun sareng nambihan sadayana anu dipendakan kana daptar. Kuring poho nyebut, ieu dianggap yen urang geus boga gambar siap-dijieun kalawan sistem ngonpigurasi (server monitoring budak) nu urang ngan saukur bisa gulung kaluar ti klien salila hiji Inok tur sambungkeun ka awan urang.

Tapi hasil pamariksaan biasana kalebet sakumpulan inpormasi anu béda, sareng salah sahijina nyaéta jinis alat anu aya dina jaringan. Anu mimiti, kami museurkeun server Windows sareng workstations Windows salaku bagian tina domain. Kusabab di perusahaan sedeng sareng ageung, kurangna domain sigana iwal ti aturan. Pikeun nyarios hiji basa, rata-rata, saur kuring, 100+ urang. Ieu diperlukeun pikeun datang nepi ka cara pikeun ngumpulkeun data tina sadaya mesin Windows jeung server, nyaho IP maranéhanana jeung akun administrator domain, tapi tanpa masang software dina unggal sahijina. Antarbeungeut WMI datang ka nyalametkeun teh. Windows Management Instrumentation (WMI) sacara harfiah hartosna alat manajemén Windows. WMI mangrupikeun salah sahiji téknologi dasar pikeun manajemén terpusat sareng ngawaskeun operasi sababaraha bagian tina infrastruktur komputer anu ngajalankeun platform Windows. Dicokot tina wiki. Salajengna, kuring kedah tinker deui pikeun nyusun wmic (ieu mangrupikeun klien WMI) pikeun Debian. Saatos sadayana parantos siap, sadayana anu tinggaleun ngan ukur polling titik-titik anu diperyogikeun ngalangkungan wmic pikeun inpormasi anu diperyogikeun. Ngaliwatan WMI anjeun bisa meunangkeun ampir sagala informasi tina komputer Windows, komo deui, Anjeun oge bisa ngadalikeun komputer ngaliwatan eta, contona, ngirim ka reboot. Ieu kumaha kumpulan inpormasi ngeunaan stasiun Windows sareng server dina sistem kami muncul. Salaku tambahan, aya inpormasi ayeuna ngeunaan indikator beban sistem ayeuna. Urang menta aranjeunna leuwih sering, sarta informasi ngeunaan hardware kirang sering. Saatos ieu, auditing janten sakedik langkung nikmat.

kaputusan distribusi software

Kami sorangan nganggo sistem unggal dinten, sareng éta salawasna kabuka pikeun unggal karyawan téknis. Sareng urang ngira yén urang tiasa ngabagikeun ka batur naon anu tos aya. Sistem éta henteu acan siap pikeun disebarkeun. Seueur anu kedah didamel deui supados versi lokal janten SaaS. Ieu kalebet parobihan dina sababaraha aspék téknis sistem (sambungan jarak jauh, jasa dukungan), analisa modul pikeun lisénsi, sharding database pelanggan, skala unggal jasa, sareng pamekaran sistem update otomatis pikeun sadaya bagian. Tapi ieu bakal bagian kadua artikel.

Update

Bagian kadua

sumber: www.habr.com

Tambahkeun komentar