−فهرست مندرجات
مقدمه
انجمن علمی صاحب یک ماشین مجازی با ۲ هستهی سیپییو و ۴ گیگ رم و ۱۰۰ گیگ حافظه است. اکثر سرویسهایی که انجمنعلمی بر روی اینترنت ارائه میدهد مثل همین دانشنامه داخل این ماشین مجازی قرار دارد.
نگهداری
محل نگهداری
دانشکده دو سرور HP دارد که داخل مرکز محاسبات نگهداری میشوند، این ماشین روی سرور دوم آن قرار دارد.
مسئولیت نگهداری خود ماشین مجازی بر عهدهی علیرضا توفیقی و نیما بهرنگ است. اگر مشکلی به وجود آمد در قدم اول به این دو و در قدم بعدی دکتر فروغمند و خانم صادقیان میتوانید پیام دهید.
آپتایم
متاسفانه گاها مشکلاتی برای سرورها پیش میآید، برای آگاهی از آپتایم روی نشانی hamband.math.sharif.edu با کمک سرویسهای رایگان آلرت ست کردیم، به این صورت که با کمک وبسایت uptimerobot.com آلرتی برای ایمیل علیرضا توفیقی و ایمیل همبند ست شده که اگر سایت پایین آمد با کمک ایمیل متوجه پایین آمدن آن شویم.
سرویسها
هماکنون برخی از سرویسها به صورت معمولی روی خودِ ویام نصب شده و برخی از آنها با کمک داکر بالا آمده است.
داکر
خوبی داکر امکان مدیریت بالا بودن سرویس و ایزولیشنی است که به ما میدهد، همچنین هزینهی نصب یک چیز جدید و انتقال در صورت ایجاد مشکل را بسیار کمتر میکند، پس مناسب است که هر سرویس جدید بر روی داکر بالا آمده و از ساختاری که در زیر پیشنهاد میشود استفاده شود.
همچنین قابلیت Docker Swarm نیز بر روی ویام محیا شده و لازم است که علاوه بر داکر از Docker swarm و سرویسها و استکهای آن استفاده کنیم.
برای راحتی بیشتر برای کار با داکر، سرویسهای دیگری روی داکر ایجاد شده که در داکر میتوانید راجع به آنها بخوانید
استراکچر پوشهها
در پوشهی خانهی ویام (/home/hambandadmin) پوشهای به نام stacks وجود دارد که سرویسهایی که روی انجمن علمی بالا میآوریم را در قالب docker-stack روی آن بالا بیاریم. نکتهی این پوشه این است که محتویات آن ۳ روز یکبار بکآپ گرفته میشود و این بکآپ همچنین داخل گوگل درایو همبند نیز ذخیره میشود تا در صورت بروز مشکل قابلیت ریکاوری وجود داشتهباشد.
در پوشهی stacks، هر سرویس به صورت CamelCase با نام اول بزرگ موجود است، مثلا سرویسها Backup، Traefik، DokuWiki از جمله این سرویسها هستند.
همچنین در هر کدام از این پوشهها یک فایل docker-compose.yml برای تعریف استک داکر، یک فایل Makefile برای راحتی دیپلوی و … و volumeهای آن استک قرار گرفته. بهتر است والیومها را به صورت پوشهای در کنار استک ذخیره کنیم که سرویس بکآپ بتواند از آن بکآپ بگیرد و ریکاوری راحتتر و همچنین با پاک کردن استک دیتاها از بین نروند.
Traefik
اگر بخواهیم از داکر استفاده کنیم، برای اینکه بتوانیم مثلا روی hamband.math.sharif.edu/wiki/* داکوویکی، روی پوشهی اصلی وردپرس و … بالا بیاوریم نیاز به یک reverse proxy داریم که ریکوئستها را به سرویسهای مربوطه route کرده و جواب دهد.
برای اینکار از Traefik استفاده کردیم که دلایل زیر برای آن وجود دارد:
- کانفیگ آن برای سرویسهای جدید سادهاست.
- قابلیت کانفیگ روی docker-composeها از طریق label وجود دارد.
- مانیتورینگ و داشبورد خوب دارد.
- خود آن را نیز میتوانیم روی سوارم بالا بیاریم
- لازم نیست سرویسها پورت اکسپوز کنند و تنها سرویسی که پورت اکسپوز میکند ترفیک است.
برای دیدن داشبورد آن به https://hamband.math.sharif.edu/dashboard مراجعه کنید، یوزر: admin و رمز: 132465
Backup
سرویس بکآپ ما از دو سرویس جداگانه استفاده میکند، در پوشهی stacks/GoogleDriveBackup میتوانید سرویس و توضیحات آن را پیدا کنید.
backup
این سرویس ۷ روز یک بار از کل پوشهی ~/stacks بکآپ گرفته، بکآپ را داخل پوشهی ~/backups به صورت tar.gz ذخیره میکند و بکآپهای کهنه را پاک میکند، کانفیگ آن داخل فایل .env قرار دارد.
google-drive-sync
این سرویس پوشهی ~/backups را با پوشهی hamband-site داخل گوگل درایو همبند سینک میکند، از rclone برای این سینک شدن استفاده میکنیم و هر ۵ دقیقه یکبار سینک شدن اتفاق میافتد. پوشهی rclone و فایل config.json برای تنظیمات این سرویس هستند.