<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Behroozam</title>
        <link>https://virgool.io/feed/@b3hroozam</link>
        <description>بهروز حسن بیگی هستم دواپس در اسنپ بقیه حرفا رو اینجا میزنم https://behroozam.com</description>
        <language>fa</language>
        <pubDate>2026-06-10 12:56:07</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2898/avatar/avatar.png?height=120&amp;width=120</url>
            <title>Behroozam</title>
            <link>https://virgool.io/@b3hroozam</link>
        </image>

                    <item>
                <title>ایجاد کلاستر الستیک سرچ برای محیط پروداکشن رنچر</title>
                <link>https://virgool.io/@b3hroozam/elk-rancher-penqaynku5ot</link>
                <description>رنچر ابزار مورد علاقه من برای داکر ارکستریشن هستش که تو ورژن 1.X و با استانداردی که برای ارکستریشن داشت به اسم cattle حد فاصل بین docker-compose و kubernetes بود که دیپلوی پروژه ها رو خیلی راحت کرده بود ، متاسفانه رنچر تو ورژن جدید خودش 2.x دیگه از cattle پشتیبانی نمیکنه و مستقیما از کوبرنیتیز پشتیبانی میکنه و مثل گذشته هدفش روی راحت تر کردن کاربری کوبرنیتیز گذاشته ، برای درک ارکستریشن باید بدونیم تفاوت آنچنانی بین ابزار ها وجود نداره همه و همه برای ساده تر کردن مدیریت سرویس ها و ایجاد استک ساخته شدن پس وقتی اینجا درمورد پیاده سازی elasticsearch + kibana تو محیط رنچر ورژن 1.6 صحبت میکنم با کمی خلاقیت میشه این رو در swarm یا docker-compose یا mesos و kubernetes در نظر گرفت.رنچر از catalog برای راحت تر کردن ایجاد سرویس های پرکاربرد استفاده میکنه ، کاتالوگ تو رنچر یه چیزی مثل helm تو kubernetes در واقع بخوایم بگیم اولین بار رنچر بود که این قابلیت رو اضافه کرد و بعد ها جامعه کاربری ks8 ( همون اختصار کوبرنیتیز که از این به بعد اینجوری میگم ) با الگو برداری از این قابلیت پیاده سازی سرویس های پرکاربردی مثل redis sentinel یا mysql replica و ... رو ساده و آسون سازی کرد ، خوشبختانه رنچر تو ورژن 2.x هم از کاتالوگ و هم از helm پشتیبانی میکنه . جامعه کاربری هم برای الستیک سرچ کاتالوگ ساخته ولی همون طور که میدونید ایران تحریم هستش و حتی با docker mirror   نمیشه کانتینر های الستیک رو دریافت کرد چون روی سرور های خودش در amazoon هاست میشه که ایران رو تحریم کرده ، پس دو راه حل داریم برای استفاده  از کانتینر های الستیک سرچ یا کانتینر رو به وسیله ابزارهای دورن زدن تحریم دانلود کنیم و تگ بزنیم و بفرسیم روی رجیستری پرایوت خودمون ( روش پیشنهادی )  یا اینکه تگ بزنیم و  بریزیم روی ریپوی پابلیک خودمون در داکرهاب که میرور دانلود کنه . و سپس کاتالوگ های رنچر رو فورک بگیریم و تفییر بدیم و ادرس ایمیج رو عوض کنیم . متاسفانه مکانیزم عملی که کاتالوگ کامیونیتی الستیک سرچ برای ساخت دیتانود و مستر و پرسیستنس درایور داره مشکل داره و درست عمل نمیکنه حتی در صورت تغییر دادن ادرس ایمیج.ورژنی که من برای دیپلوی استفاده کردم اخرین ورژن الستیک سرچ در حال حاظر هستش که ورژن 6.3.1 هستش که خوشبختانه از این ورژن به بعد اکثر قابلیت های تجاری که توی پکیج x-pack بود اوپن سورس و رایگان شده ، الستیک سرچ درواقع از این به بعد یک توزیع خواهد داشت و دیگه با تگ های پلاتینیوم و oss رلیز نمیشه.الستیک سرچ رو معمولا به صورت کلاستر بالا میارن چون هم قابل اعتماد تره هم میتونه به صورت master و data کانفیگ بشه ، به صورت پیشفرض کلاستر اسلتیک master-eligible هستش یعنی هر نود کلاستر مستر میتونه باشه و هم اطلاعات رو ذخیره کنه که به درد کلاستر های کوچیک میخوره ، برای کلاستر های بزرگتر نیاز هستش که یک سری نود ها اطلاعات رو ذخیره ( data nodes ) و یه تعداد دیگه مدیریت رو به عده بگیرن ( master nodes ) که به این مدل Dedicated Master Nodes میگن که من تو این آموزش از این روش استفاده کردم . مهم ترین موردی که در ارکستریشن بهش برخورد میکنین نحوه مدیریت volume driver ها هستش که معمولا از چند مدل خارج نیست ، یا local driver یا shared driver که انواع مختلفی رو شامل میشن و هرکدوم مزایا و معایب خودشون رو دارن حتی رنچر در اپدیت جدید خودش در 2.x یه بلاک استوریج به اسم longhorn که یه distributed block storage system رو معرفی کرده . برای الستیک سرچ به دلیل فضای زیادی که برای ذخیره سازی نیاز داره پیشنهاد من local driver به جز اینکه شما نمیخواین شبکه داخلیتون درگیر به اشتراک گذاری فایل بین اینستنس های مختلفتون بشه یا تو این کیسی که هست حداقل بار روی شبکه باشه . رنچر برای دیپولوی استک از docker compose و rancher compose استفاده میکنه که rancher-compose قابلیت های دیگه ای علاوه بر قالبلیت های docker-compose به ارکستریشن اصافه میکنه که در این مقاله نمیگنجه. داکر و رنچر کامپوزی که برای ایجاد سرویس elasticsearch + kibana استفاده میکنیم اینجوری هستش که روی gist قرار دادم.برای جدا کردن node های master و data از host label استفاده میکنیم که توی مثالی که روی gist برای شما قرار دادم elk=master و elk=data هستش .برای سرویس دیسکاوری که elasticsearch استفاده میکنه یا به عبارتی یوینکست میکنه از متغیر  discovery.zen.ping.unicast.hosts: elasticsearch.yourstack,elasticsearchnode.yourstackاستفاده کردم که بر اساس dns سرویس شما دیسکاور میکنه ، تو رنچر dns سرویس به این صورت هست که اول سرویس و بعد استک اینجوری درواقع servicename.stackname برای دیسکاوری فرضا اگرشما استکی به اسم elk میخواین درست کنید چیزی به این صورت میشه elasticsearch.elk . توی کوبرنیتیز قضیه کمی فرق میکنه و dns به این صورت هستش my-svc.my-namespace.svc.cluster.local.مورد دیگه این هستش که داکر به صورت جادویی تنظیمات sysctl رو برای شما تغیر نمیده پس برای افزایش vm.max_map_count باید sysctl.conf هاست های خودتون رو افزایش بدین بدین صورت echo &quot;vm.max_map_count=262144&quot; &gt;&gt; /etc/sysctl.confsysctl --system چند نکته اساسی :برای بهتر بودن و قابل اطمینان بودن سرویس سعی کنید قانون حد نصاب ( Quorum ) رو رعایت کنید و حداقل سه هاست برای دیتا و دو هاست برای مستر داشته باشید سرویس به صورت گلوبال scale  شده پس روی هر هاستی که لیبل elk=master یا elk=data بزنید یه node ساخته میشه تا قبل از ساخته شدن والیوم ها سرویس رو داون نکنید کراپت میشه تنظیمات کلاستر و مجبور میشین همه رو از اول پاک کنید </description>
                <category>Behroozam</category>
                <author>Behroozam</author>
                <pubDate>Sat, 14 Jul 2018 15:17:10 +0430</pubDate>
            </item>
                    <item>
                <title>هوش مصنوعی : جان سرل و چند استدلال علیه ماتریالیسم</title>
                <link>https://virgool.io/@b3hroozam/mind-il6udajbi1fx</link>
                <description>کشور در اوضاع مناسبی نیست شاید نوشتن درمورد هوش مصنوعی و مسائل نظری در این حوزه در این زمان و مکان نامناسب باشد ولی فعلا کاری از دست ما مردم عادی بر نمی آید ما محکوم به سرنوشتی هستیم که برایمان رقم میزنند و به یادگار بماند این نوشته که هیچکس به یادمان نبود.در نوشته قبلی به به اثرات اجتماعی-اقتصادی رشد و توسعه مجازی سازی و هوش مصنوعی اشاره کردم البته ، اما بحث ذهن و اینکه آیا هوش مصنوعی به خودآگاهی خواهد رسید که تهدیدی برای انسان باشد اشاره نشد ( که البته شامل مسائل کاربردی این علم نمیشود و همواره تا زمان تکینگی تکنولوژيکی مورد بحث خواهد بود)این نوشته بیشتر به جنبه های تخصصی اقتصاد و فلسفه ذهن و آینده هوش مصنوعی می پردازد. حیف است که در مورد جوانب دیگری که بازار کار را تا به اکنون متحول کرده صحبت نکنیم و سپس به سراغ جان سرل برویم.حقیقتا که ما اکنون در ابتدای انقلاب صنعتی چهارم هستیم اگر انقلاب صنعتی سوم رشد انفجاری الکترونیک و صنایع وابسته در دهه ۶۰ و ۷۰ بود ما در دو دهه ابتدایی قرن ۲۱ ام با رشد سرسام آور اطلاعات رو به رو بودیم این حجم از افزونگی داده ما را با چالش هایی در زمینه ذخیره و پردازش اطلاعات رو به رو کرد که اتومایزشن و روباتیک و نسل های مختلف هوش مصنوعی حاصل تحقیقات و رفع این چالش ها بودند. در پست قبل از دنیای بدون کار ( jobless ) گفتم ولی دلیلی بر مدعای خود نیاوردم.  چالشی که امروز به مدد تکنولوژی بازار کار با آن رو به روست موضوع بهره وری یا ( TFP ) است که لازمه یه اقتصاد پویا و سالم است ، ولی در دو دهه گذشته این رقم به نصف تمایل پیدا کرده در بیست سال گذشته نابرابری بین دستمزد کارگران و سود شرکت ها افزایش پیدا کرده ولی به همان نسبت میزان نیاز به مشاغل کم تخصص با سرعت روز افزونی رو به کاهش نهاده .  این انقلاب صنعتی چهارم را با هیچکدام از سبقه های پیشین آن نمیتوان مقایسه کرد اگر در زمان انقلاب صنعتی در قرن ۱۸ ام جنبش لادیسم در انگلستان با خراب کردن چرخ های ریسندگی و آتش زدن کارخانه ها اعتراض خود را نسبت به بیکار شدن و دستمزد های پایین ابراز میکرد اما میتوانست کارگر مزرعه شود و شکم خود را سیر کند. سرعت رشد تکنولوژی در قرن ۲۱ ام ولی شتابان است و در دنیای بدون کار جایگزینی هم برای سیر کردن شکم وجود ندارد.حال به سراغ جان سرل برویم که در کتاب خود درآمدی کوتاه به ذهن ( Mind: A Brief Introduction ) که در سال ۲۰۰۴ نوشته شده مسائلی را در این زمینه بیان میکند با اینکه دیدگاه سرل قدیمی شده و امروز در سال ۲۰۱۸ چهارده سال پس از کتاب او معدود محقق و دانشمندی نسبت به حتمی بودن تکینگی و ایجاد هوش مصنوعی ابر انسان شک دارد ولی برسی نظراتی که او در کتاب خود بیان کرده و نقد دیدگاه او به دلیل عمومیتی که بین قشر فلسفی و دانشگاهی ما دارد خالی از طلف نیست.در اینجا مستقیما به طرح مسائلی که جان سرل بیان میکند میپردازیم که خود ۷ دلیل رد مادی گرایی نام گذاری میکند ( به صورت خلاصه هر کدام از مسائل را شرح میدهم ولی به دلیل حقوق مولف و مترجمین کتاب از نقل قول مستقیم اجتناب میکنم ) :۱- کوالیای مفقود  تجربه های آگاهانه ما جنبه کیفی دارند . این سرآغاز بحثی است که ما آن را کیفیت میخوانیم . برداشت متفاوت انسان ها نسبت به موسیقی متال و بتهوون . هر کس که بخواهد کوالیا را نفی کند اشتباه کرده چون واقعا وجود دارد .  نباید به دل خطر بزنیم وجعبه پاندورای ذهن را باز کنیم ؟ آیا گذشتگان ما ریتم های مطبوع را در موسیقی که به گوش انسان به دلایل مکانیکی و ریتمیک اثر گذارند را کشف نکرده اند و آیا سبک های جدید در تنظیم خود خارج از این اصول و قواعد جرکت میکنند ؟آیا سنسورهای دقیقی که دما را اندازه گیری میکنند به اندازه تجربه درونی ما از گرمای تابستان دقیق نیستند ؟  من فکر میکنم کیفیت گرایان متوجه این امر نشده اند که اعصاب و شناخت آن ها محدود به فیزولوژی و پیش زمینه های ذهنی آن هاست وگرنه هوش مصنوعی به دلیل ماهیت خود و قابلیت گسترش پذیری که دارد طیف های کیفی را به خوبی و بسیار دقیق تر از نوع بشر خواهد شناخت .  ۲- وارونگی طیف  مثال معروفی در فلسفه و حتی خارج از فلسفه وجود دارد تصور کنید چراغ قرمز راهنمایی و رانندگی سبز میشود و شما با ماشین حرکت میکنید ، ماشین کناری هم با شما حرکت کرده است ولی در فرهنگ لغت یا شناخت او رنگ سبز نیست . درواقع رفتار یکسان بوده ولی برداشت درونی متفاوت بوده است  در دنیای کامپیوتر ما با فکت ها سروکار داریم میدانیم رنگ به معنای طیف بازتاب شده ای از جسم است که با سنسور ها دقیقا یک برداشت از آن وجود خواهد داشت ، این استدلال وارونگی طیف همانند استدلال های قبل و بعد از تعریف ناقصی از هوش مصنوعی بدون خرد و بدون شبکه عصبی و دیتا مورد نیاز است.  ۳- خفاش بودن چگونه چیزی است ؟فرض کنید ما اعصاب و فیزولوژی خفاش را به صورت کامل شناخته ایم و تمامی رفتار خفاش را میشناسیم ولی آیا میتوانیم خفاش بودن را درک کنیم ؟مسئله ای که درمورد خود یا توهم من مطرح میشود در علم شناختن اعصاب رد میشود میدانیم که اراده و فکر کردن در واقع توهمی بیش نیستند ، بدون داشتن شبکه عصبی که خاطرات و تلفیق اندیشه را فراهم کند توهم من یا خود داشتن بی معناست . برای مثال بسیاری از کسانی که دکارت باور هستن با خود میگویند من فکر میکنم پس هستم و سپس برای دیگر حیوانات به این دلیل که نمود عقلانیت انسانی در آن ها مشاهده نمیشود استدلال میکنند که فاقد شعور و من هستند درحالی که حیواناتی که دارای شبکه عصبی پیچیده هستند دارای نوعی از خودآگاهی هستند.  درمورد تجربه خفاش میشود با واقعیت مجازی احساسی که خفاش در یک گردش شبانه دارد را شبیه سازی کرد حتی میتوان در محیط آزمایشگاهی با توجه به فیزیولوژی خفاش کارکرد دارو را روی خفاش مجازی آزمایش کرد. پس در واقع این استدلال هم به نوعی قدیمی و از رده خارج محسوب میشود. درواقع در تمامی استدلال های فوق و بعدی بر این تاکید میشود که سوژه نمیتواند همانند یک آبژکت به خود بپردازد و اینگونه برسی ابتر و ناقص است در مسئله های بع این موضوع را بیشتر باز خواهم کرد  ۴- فرانک جکسون : آنچه ماری نمیدانست  ماری دانشمندی است که آگاهی و علم کاملی نسبت به طیف رنگ ها دارد ولی محیطی بزرگ شده که تنها در آن سیاه و سفید معنا دارد . ماری معنای رنگ قرمز  را درک نمیکند زیرا رنگ مسئله ای کیفی است  همان طور که در مسئله اول به آن اشاره شد هوش مصنوعی با یادگیری ماشینی میتواند درک بسیار پیچیده و دقیق تری نسبت به طیف رنگ ها داشته باشد  ۵ – ند بلاک : ملت چین  تصور کنید در مغز یک میلیارد نورون وجود دارد و جمعیت چین یک میلیارد است . ملت چین به صورت یک کل دارای ذهن نیستند.  در اینجا ند بلاک شبکه های عصبی را که با الگوبرداری از اعصاب حیوانات ساخته میشود را نقد  میکند درحالی که شبکه عصبی که شبیه سازی شده دارای ورودی خروجی و کارکرد است. در شبکه های عصبی موجود که وظایفی مثل پردازش تصویر و متن را بر عهده دارند میدانیم نتیجه نهایی بسیار حیرت انگیز است ، نمونه هایی مثل واتسون IBM را در پست قبل شرح دادم .۶ – نشانگر صلب ( rigid designator )وقتی میگویم حسن روحانی رئیس جمهور اسلامی ایران است در واقع دو گذاره را همانند میگیریم ، حسن روحانی و ریاست جمهوری درحالی که به جای ریاست حسن روحانی میتوانست اسامی دیگری قرار بگیرد ولی وقتی میگویم آب همان H2O است این به معنای قطعی بودن این گذاره است .  وقتی میگویم ضربه خودن به شست پای انسان باعث تحریک عصب میشود که خود واکنشی را به وجود می آورد ضرورتا همانند مثال اول این امکان وجود دارد که این گذاره قطعی نباشد .  اصولا نقدی که متفکران پست مدرن بر روشنگری و روش علمی دارند تقلیل گرایی است . یعنی توضیح مسائل به ساده ترین شکل و شواهد ، درحالی که برای یک امر شهودی میتوان متغیر های بسیاری محتمل بود . نمیتوان منکر این قضیه بود که در آینده و با کشف قوانین و سازوکار های انسان متوجه اشتباهاتمان در شناخت ذهن و یا دیگر مسائل علمی میشویم ولی تنها ابزاری که امروز برای شناخت جهان پیرامون و خودمان داریم همان ابزار علمی است پس وقتی میگویم تحریک یا ضربه به شست پا باعث واکنش در اعصاب میشود خود میتواند در آینده رد شود. پس این استدلال هم دلیلی بر رد مدعای امکان هوش مصنوعی نیست  ۷ – جان سرل : اتاق چینی  فرض کنید در اتاقی قرار گرفته اید و مجبورید با کنار هم قرار دادن کلمات چینی پاسخی را بدهید ، شما با کتابچه راهنما کلمات چینی را در کنار هم قرار میدهید و پاسخ صحیح را میدهید . شما آزمون تورینگ را با موفقیت پشت سر گذاشته اید ولی آیا واقعا معنای کلماتی را که نوشته اید متوجه شده اید ؟ من فکر میکنم برای رایانه هم همینگونه خواهد بود چون رایانه چیز بیشتری از من در اتاق در اختیار ندارد.در سال ۲۰۰۴ ما انتظار انفجار اطلاعاتی به این صورت که با رشد تلفن های هوشمند و اینترنت فراگیر شدن ارتباطات وجود داشت را نداشتیم . تعجبی ندارد که جان سرل محدوده شناحت ماشین را محدود به اتاق و زبان چینی میداند . برای مثال جستجوگر وب گوگل با اسپایدر های خود که نشانه گذاری های اینترنتی و لینک های مختلفی که اسپایدر مورد کند و کاو  قرار میدهد را در ذهن تصور کنید ، الگوریتم های یادیگیری ماشینی که نه تنها با داده های قبلی تربیت میشود بلکه کد خود را جهت کاربرد بهتر بهبود میبخشد. میتوانم بگویم این استدلال پس از باخت هوش انسان در مسابقه ای که با واتسون برگذار شد بی معناست  https://www.youtube.com/watch?v=WFR3lOm_xhE  واتسون حتی دسترسی به اینترنت هم نداشت ، حال ما ماشین هایی سریعتر قوی تر و بدون خستگی داریم که برخلاف انسان میتوانند ژنتیک خود را اصلاح کنند  و تاریخ و فلسفه و هنر و علم را بفهمند نه تنها با کنار هم قرار دادن الگو ها معنی خلق کنند بلکه با تلفیق این ها عملا دارای خودآگاهی باشند .میدانیم دوگانه انگاری بارها در تاریخ تکرار شده و طرفداران بسیاری دارد ، دوگانه انگاری به معنای جدا بودن ذهن از بدن یا به عبارتی روان یا روح در معنای مدرن خود معنی ندارد با نگاهی به آزمایش های آسیب شناختی اعصاب امروزه میدانیم که چه قسمتی از مغز کارکرد اختصاصی خود را دارد و با آسیب رساندن به کدام قسمت میتوان عملکرد آن قسمت را مختل کرد که به طور مستقیم در رفتار انسان تاثیر خود را نشان دهد.در رد دوگانه انگاری دکارتی کتاب ها و مقالات زیادی نوشته شده که در این مبحث نمیگنجد.البته در مورد هوش مصنوعی مباحث و مقالات بی شمار هستند از مباحث فنی شبکه های عصبی که خوشبختانه ابزار های متن باز زیادی برایشان به وجود آمده تا مباحث فلسفی و اقتصادی و اجتماعی اینچنینی ، فرهنگ عامه هم بیکار نبوده و در داستان های علمی و تخیلی و سریال ها و فیلم ها نمود آن را بارها دیده ایم .ارجاعات به چند مورد از تاثیر گذار ترین این کتاب ها و ویدئو کنفرانس ها میتواند در شناخت ما نسبت به این موضوع کمک شایانی نماید.کتاب تحسین شده قیام روبات ها اثر فیوچریست معروف مارتین فورد که به عواقب اقصادی-اجتماعی تلفیق هوش مصنوعی و روباتیک اشاره داره  سخنرانی تد نیک بوستروم عزیز که قبلا در پست قبلی از اون یه تریلما درمورد مغز درون خمره برسی کرده بودم   https://www.youtube.com/watch?v=MnT1xgZgkpk&amp;t=556s سخنرانی تد سم هریس درمورد اینکه چگونه میشه هوش مصنوعی ساخت که خطری برای نسل بشر نباشه و البته پاسخ نهایی دلهره کننده و توامان دلگرم کننده اش   https://www.youtube.com/watch?v=8nt3edWLgIg سخنرانی معروف ایلیان ماسک و بیل گیتس درمورد هوش مصنوعی در چین   https://www.youtube.com/watch?v=vHzJ_AJ34uQ&amp;t=90s فیلم هایی مثل یک اودیسه فضایی ، ایکس ماشینا که در آن آزمون تورینگ مطرح میشود ، سه گانه ماتریکس ، انیمه زیبای انیماتریکس که دیدن رنسانس اول و رنسانس دوم آن را به همه پیشنهاد میکنمکتاب خطای دکارت آنتونیو داماسیو که تقریبا میتوان گفت مهم ترین کتاب در  حوزه فلسفه ذهن است. کتاب انقلاب صنعتی چهارم نوشته کلاوس شوآب بنیانگذار مجمع جهانی اقتصاد و با ترجمه طوفان عزیزی بازی کانوی یا گیم او لایف که با یک سری قوانین محدود کننده میتواندی شگفت زده شوید از این که چگونه یک حیات بسیار ساده را درون گوشی تلفن همراه خودتان دارید .  و البته ایزاک آسیموف بزرگ و قوانین ۴ گانه او که البته مورد مناقشات بسیاری هم هست.  و البته یک مناظره جالب هم در این مورد در پرگار بی بی سی فارسی انجام شده که دیدن آن خالی از لطف نیست   https://www.youtube.com/watch?v=mh4L2pgV_1M </description>
                <category>Behroozam</category>
                <author>Behroozam</author>
                <pubDate>Sun, 20 May 2018 01:29:46 +0430</pubDate>
            </item>
                    <item>
                <title>لودبالانسینگ در رنچر</title>
                <link>https://virgool.io/@b3hroozam/rancher-multisite-loadbalancing-hqdd8xxtrgrc</link>
                <description>ابزار ارکستریشن مورد علاقه من رنچر هستش به دلیل تحریم هایی که برای کوبرنتیز داریم من تمپلیت cattle رو برای پروداکشن و تست ترجیح میدم . کتل توسط تیم رنچر توسعه داده شده و از رنچر کامپوز و داکر کامپوز هم پیشتیبانی میکنه .  نصب و راه اندازی rancher ساده است کمی جزئیات داره که با کمی بالا پایین کردن داکیومنت های رنچر به راحتی میتونید پیاده سازی کنید (ویدئو آموزشی که با یکی از دوستان آماده کرده بودیم متاسفانه از روی سیستمش پاک شده )به صورت پیشفرض و سنتی اگه بخواین لود بالانسینگ راه اندازی کنید مجبور هستین روی پورت ۸۰ و۴۴۳ هرکدوم از هاست هایی که به کلاستر متصل هست پورت رو مپ کنید که برای virtualhosting مناسب نیست . راه حل مورد علاقه من این هستش که یه لود بالانسر گلوبال یا به عبارتی frontended loadbalancer جلوی تمام ترافیکی که به سمت کلاستر میاد قرار بدیم و با label ترافیک رو به سمت کانتینر ها مدیریت کنیم . معماریش در واقع اینطوری میشه تو قدم اول یه استک بسازین به هر اسمی که دوست دارین و توش یه لود بالانسر اضافه کنید فراموش نکنید که تو schedule انتخاب کنید که دقیقا روی کدوم از هاست هاتون میخواین پیاده سازی بشه (همون هاستی که dns ها قراره به اون resolve بشن ) روی add selector rule کلیک کنید و این مقادیر رو اضافه کنید حالا وقتشه سراغ استکی برین که قراره توش internal loadbalancer پیاده سازی بشه ایندفعه به جای public رول internal رو انتخاب کنید و اینجوری سرویس خودتون رو مپ کنید ، نکته مهم این هستش که تو لود بالانسرتون تو قسمت label ها مقدار  web.http یا web.https رو بنا به نیاز خودتون معادل true قرار بدین تبریک میگم حالا شما سرویسی دارین که میتونه scale بشه loadbalancer های اینترنال میتونه scale بشه و virtualhosting هم انجام بشه . مباحث دیگه ای مثل forwardfor تو haproxy و maxconn و nbproc  تنظیمات sysctl برای تنظیم متغیر های کرنل هم وجود داره که در حوصله این بحث نیست . تنظیمات ssl هم میتونه روی frontend loadbalancer قرار بگیره . </description>
                <category>Behroozam</category>
                <author>Behroozam</author>
                <pubDate>Sat, 28 Apr 2018 18:40:27 +0430</pubDate>
            </item>
                    <item>
                <title>چجوری یه پرایوت رجیستری داکر برای خودم داشته باشم</title>
                <link>https://virgool.io/@b3hroozam/docker-private-registry-fdzbjvlnitbf</link>
                <description>اگه این مطلب رو میخونید احتمالا با معماری داکر آشنا هستین و به صورت روزمره از داکر تو پروژه هاتون استفاده میکنید. کار پرایوت رجیستری ذخیره کانتینر و تعیین سطوح دسترسی به کانتینر ها هستش مزیت پرایوت رجیستری نسبت به ریپازیتوری های انلاین مثل gcr.io و docker hub این هستش که خب اونا مارو تحریم کردن باید یه جوری بدون دردسر دورشون بزنیم . مزیت دیگه اینه که زمانی که بخوایم تو پروداکشن از سرور پرایوت خودمون استفاده کنیم نیازی نیست که به اینترنت دسترسی داشته باشیم ، و در نهایت پالیسی شرکت ها مبنی بر اینکه کد و کانتینر حتما و حتما تو زیرساخت خودشون باشه که از سواستفاده های احتمالی که ممکنه ایجاد بشه جلوگیری کنن . بریم سر اصل مطلب ،  قبلا ها میشد به راحتی از روش basic authentication برای احراز هویت استفاده کرد مثل این آموزش احمد طحانی ولی داکر برای بالابردن امنیت این روش رو حذف کرد و جایگزینش یه از یه روش توکن بیس شبیه به Oauth2 استفاده کرده اینشکلی یعنی :به همین دلیل روش قدیمی منسوخ و باید از یه سرور جهت ISSUER بودن استفاده کرد. خوشبختانه جامعه کاربری داکر بیکار نمونده و برای  این قضیه کانتینر docker_auth رو توسعه داده .من از docker compose v2 جهت کانفیگ کردن استفاده کردم شما میتونید از هر ابزار دیگه مدیریت کانتینر یا ارکستریشن برای ساختن پرایوت رجستری خودتون استفاده کنید  ساختار پروژه به این صورت هستش برای شروع با ادیتور مورد علاقمون یه فایل docker-compose.yml میسازیم و این محتویات رو توش کپی میکنیم و yourdomain  رو با دامنه مورد علاقه خودتون عوض کنید registry:
 restart: always
 image: registry:2
 ports:
    - &quot;443:443&quot;
 environment:
   - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem
   - REGISTRY_HTTP_TLS_KEY=/certs/privkey.pem
   - REGISTRY_HTTP_ADDR= :443
   - REGISTRY_AUTH=token
   - REGISTRY_AUTH_TOKEN_REALM=https://yourdomain:5000/auth
   - REGISTRY_AUTH_TOKEN_SERVICE=&quot;Docker registry&quot;
   - REGISTRY_AUTH_TOKEN_ISSUER=&quot;Acme auth server&quot;
   - REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE=/certs/fullchain.pem
 volumes:
    - /registry/data:/var/lib/registry
    - /registry/certs:/certs
    - /registry/auth:/auth

dockerauth:
 image: cesanta/docker_auth:stable
 ports:
    - &quot;5000:5000&quot;
 volumes:
    - /registry/config:/config:ro
    - /registry/log/docker_auth:/logs
    - /registry/ssl:/ssl
 command: /config/auth_config.yml
 restart: alwaysالبته که من این پروژه رو تو دایرکتوری  registry ساختم شما میتونید ماونت پوینت هارو به پروژه اکنون خودتون تغییر بدین . فایل auth_config.yml رو هم میتونید تو دایرکتوری config بسازید که محتویاتش باید اینجوری باشه # A simple example. See reference.yml for explanation for explanation of all options.
server:
 addr: &quot;:5000&quot;
 certificate: &quot;/ssl/fullchain.pem&quot;
 key: &quot;/ssl/privkey.pem&quot;

token:
 realm: &quot;https://127.0.0.1:5000/auth&quot;
 rootcertbundle: &quot;/ssl/fullchain.pem&quot;
 issuer: &quot;Acme auth server&quot; # Must match issuer in the Registry config.
 expiration: 900

users:
 # Password is specified as a BCrypt hash. Use htpasswd -B to generate.
 &quot;admin&quot;:
 password: &quot;$2y$05$LO.vzwpWC5LZGqThvEfznu8qhb5SGqvBSWY1J3yZ4AxtMRZ3kN5jC&quot; # badmin
 &quot;test&quot;:
 password: &quot;$2y$05$WuwBasGDAgr.QCbGIjKJaep4dhxeai9gNZdmBnQXqpKly57oNutya&quot; # 123
acl:
  - match: {account: &quot;admin&quot;}
 actions: [&quot;*&quot;]
 comment: &quot;Admin has full access to everything.&quot;
  - match: {account: &quot;user&quot;}
 actions: [&quot;pull&quot;]
 comment: &quot;User \&quot;user\&quot; can pull stuff.&quot;
 # Access is denied by default.

تو قدم بعدی ssl certificate خودمون میسازیم به دایرکتوری های ssl و certs لینک میکنیم . و تو قدم آخر docker compose up -d برای اضافه کردن کاربر به تنظیمات کافی هستش از این کامند جهت ساختن رمز برای کاربر استفاده کنید و مثل کانفیگ بالا سطح دسترسی رو اونجوری تو فایل  auth_config.yml تعیین کنید docker run --entrypoint htpasswd registry:2 -Bbn &quot;user&quot; &quot;password&quot;در نهایت همه این ها تو گیتهابم هستش و میتونید برای سناریو های پیچیده تر مثلا  LDAP و google sgin in برای مدیریت کانتینتر های خودتون استفاده کنید. </description>
                <category>Behroozam</category>
                <author>Behroozam</author>
                <pubDate>Sat, 03 Mar 2018 19:46:47 +0330</pubDate>
            </item>
            </channel>
</rss>