Comment font les « grands » : Azure, Google…

Quand on s’intéresse aux architectures sous-jacentes des solutions Cloud, on remarque deux points communs:

  • Le peu de chiffres qu’on trouve donnent le vertige (oui oui, 1 Péta = 1000 Téra…)
  • Très peu d’informations sont divulgués sur l’aspect technique

Il se trouve que Google & Azure ont récemment lâchés quelques informations, surtout sur le réseau 🙂
Facebook est un peu en avance et communique davantage.

Microsoft Azure

Pour Azure, Voici des slides de Maître Russinovich (cliquer sur l’image pour ouvrir le PowerPoint (29 diapos)):

2015-06-19_14-37-27

Fait le plus marquant: ils utilisent des FPGA (processeurs programmables) pour gérer la couche réseau (40GbE/s).

Les dernières infos les plus intéressantes que j’avais eu étaient pendant les TechEd en 2012, toujours de Mark. La vidéo est encore en ligne:

  • ~10 personnes pour administrer 100 000 serveurs physiques!
  • Démonstration d’une interface d’administration Azure,
  • Vue graphique des racks avec les VM,
  • Démonstration de self healing de la plateforme,
  • Explications sur le bug du 29 février, avec la ligne de commande qui a tout planté

Google

Il semble tout indexer, sauf le contenu de son architecture technique (avec un robots.txt super efficace 😉
Techcrunch a collecté des informations intéressantes, également sur la gestion du réseau (SDN):

http://techcrunch.com/2015/06/17/google-pulls-back-curtain-on-its-data-center-networking-setup/

En 2009, ils avaient publié une visite d’un de leur datacenter, avec l’aspect d’un serveur dans un conteneur:

2015-06-19_14-56-27

Facebook

Ils sont un peu plus bavard, ça doit être dans leur DNA…:

https://code.facebook.com/posts/360346274145943/introducing-data-center-fabric-the-next-generation-facebook-data-center-network

Figure 2:

Un serveur Facebook (un ancien modèle je pense):

Le vide à l’arrière n’est pas juste pour visualiser, c’est vaiment un « trou »:

Office365

Les informations les plus présentes concernent la messagerie Exchange:

  • Pas de sauvegarde,
  • Réplication 3 + 1 Lag à 8 jours (qui descend à 0 en cas de problèmes)
  • JBOD pour le stockage (1 banque par disque dur).
  • Optimisations via Exchange 2016

Office 365 est indépendant d’Azure, même si certains services y sont hébergés et que la fusion est pour moi en approche.

Amazon

  • Ils utilisent Xen pour la virtualisation,
  • Ils font leur propres serveurs,
  • Basé sur des technos open source

Conclusions

Ils ont des besoins hors normes, mais ils ont aussi les moyens en conséquences:

  • Maîtrise complète de toute la chaîne: datacenter, réseau, serveurs, OS, hyperviseur, applications, répartiteurs de charges, moteurs SQL
  • Développements dans les couches basses : SDN, FPGA…
  • Code source (et personnes pour le faire évoluer): Windows pour Microsoft, Linux pour Google,Facebook et Amazon
  • Ils s’appuient sur des projets Open source (OpenFlow, memcache, Hadoop…) mais en ont des extensions propriétaires
  • S’il le juge utile, ils peuvent dépenser des moyens colossaux sur certains sujets (comme Google avec son SDN logiciel).

Tout cela leur donne une indépendance forte vis à vis des autres entreprises et leur rachats éventuels part des concurrents. Certains sujets sont certainement plus économique par rapport à la volumétrie (par exemple en économisant $50 par serveur, x300 000)

Là où pour nous c’est parfois le top du top (géo cluster, DRP, LB), c’est le minimum syndical pour eux. Une fois cette barrière levée, un nouveau boulevard s’ouvre avec la montée en charge.

Nouvelles

Comme vous pouvez le voir, je viens de changer le thème du site… Après pas mal d’années de bons et loyaux services, Le thème Mystique vient de me générer des memory fault suite à la mise à jour de WordPress… J’espère que ce nouveau thème vous plaira autant que le précédent !

Je viens aussi de migrer récemment l’architecture afin de valider des hypothèses. L’air de rien, ce blog implique maintenant 8 VM:

  • 2 Load balancer sous Zen load balancer
  • 2 Frontaux Web (Apache/PHP…)
  • 2 noeuds GlusterFS (système de fichiers distribué) (contient le site WordPress)
  • 2 noeuds cluster MariaDB Galera (base WordPress)

Le tout sous un seul serveur physique sous VMware, l’idée est de valider le fonctionnement des composants 🙂

 

SharePoint – DateTimeControl – unexpected error – iframe – Object reference not set to an instance of an object

Problème

Dans une solution existante, j’ai un contrôle de type DateTime:

<Sharepoint:DateTimeControl ID="DateTimeControl1"  dateonly="true" ShowWeekNumber="true" FirstDayOfWeek="1" FirstWeekOfYear="2" runat="server" EnableViewState="true"></sharepoint:DateTimeControl>

Cependant au lieu d’avoir le contrôle, j’ai eu un message d’erreur à la place (An unexpected error has occurred):

2014-12-10_09-45-35

 

Dans le log ULS:

Medium Application error when access /_layouts/15/iframe.aspx, Error=Object reference not set to an instance of an object. at Microsoft.SharePoint.Utilities.SPUtility.GetThemedImageUrl(String originalUrl, String themeKey) at Microsoft.SharePoint.WebControls.DatePicker..ctor() at Microsoft.SharePoint.WebControls.SPDatePickerControl.InitDatePicker() at Microsoft.SharePoint.WebControls.SPDatePickerControl.set_ShowWeekNumber(Boolean value) at Microsoft.SharePoint.ApplicationPages.DatePickerFrame.Page_Load(Object sender, EventArgs e) at System.EventHandler.Invoke(Object sender, EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Unexpected System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.SharePoint.Utilities.SPUtility.GetThemedImageUrl(String originalUrl, String themeKey) at Microsoft.SharePoint.WebControls.DatePicker..ctor() at Microsoft.SharePoint.WebControls.SPDatePickerControl.InitDatePicker() at Microsoft.SharePoint.WebControls.SPDatePickerControl.set_ShowWeekNumber(Boolean value) at Microsoft.SharePoint.ApplicationPages.DatePickerFrame.Page_Load(Object sender, EventArgs e) at System.EventHandler.Invoke(Object sender, EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

 

Solution

Il faut créer une collection site à la racine de l’application web (/).

Simple, mais SharePoint est capricieux comme toujours.

 

Project Server 2013 – Access to the registry key ‘Global’ is denied

Problème

Toutes les minutes, dans les journaux ULS, vous constatez cette erreur:

  • Process: Microsoft.Office.Project.Server
  • Produit: Project Server
  • Catégorie: Project Calculation Service
Timer Task thread crashed System.UnauthorizedAccessException: Access to the registry key 'Global' is denied. 
 at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str) 
 at Microsoft.Win32.RegistryKey.InternalGetValue(String name, Object defaultValue, Boolean doNotExpand, Boolean checkSecurity) 
 at Microsoft.Win32.RegistryKey.GetValue(String name) 
 at System.Diagnostics.PerformanceMonitor.GetData(String item) 
 at System.Diagnostics.PerformanceCounterLib.GetPerformanceData(String item) 
 at System.Diagnostics.PerformanceCounterLib.get_CategoryTable() 
 at System.Diagnostics.PerformanceCounterLib.CounterExists(String category, String counter, Boolean& categoryExists) 
 at System.Diagnostics.PerformanceCounterLib.CounterExists(String machine, String category, String counter) 
 at System.Diagnostics.PerformanceCounter.InitializeImpl() 
 at System.Diagnostics.PerformanceCounter..ctor(String categoryName, String counterName, String instanceName, Boolean readOnly) 
 at System.Diagnostics.PerformanceCounter..ctor(String categoryName, String counterName, String instanceName) 
 at Microsoft.Office.Project.Server.BusinessLayer.PcsEngine.PcsPerfCounter.<.ctor>b__0() 
 at System.Lazy`1.CreateValue() --- End of stack trace from previous location where exception was thrown --- 
 at System.Lazy`1.get_Value() 
 at Microsoft.Office.Project.Server.BusinessLayer.PcsEngine.PcsPerfCounter.EnsureSampleDataTask() 
 at Microsoft.Office.Project.Server.BusinessLayer.PcsEngine.PcsTaskWorker.PerformTasksCallback(Object obj) StackTrace: 
 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
 at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 
 at System.Threading.ThreadPoolWorkQueue.Dispatch()

Solution

Project Server maintient des compteurs de performances le concernant. Il doit donc avoir les droits de le faire. Il faut ajouter le compte qui démarre les services Project Server aux groupes locaux suivants:

  • Performance Log USers
  • Performance Monitor Users

Il faut ensuite redémarrer les services Project Server quand la file d’attente n’a pas de travail.

SharePoint 2013 – NodeRunnerQuery et NodeRunnerAdmin – erreurs accès SQL

Problème

Dans les journaux ULS de SharePoint, vous constatez ces messages en boucle:

  • Unable to get sql session to admin database
  • NerioCluster: No lease returned when reading DB

2014-10-05_10-58-11

Solution

Le service de recherche est démarré dans les services, mais aucune application de recherche n’est crée.

Il faut soit créer une application de recherche soit arrêter le service depuis l’administration centrale:

2014-10-05_11-01-38

SharePoint 2013 – MsiInstaller – 1015 – Failed to connect to server. Error: 0x80070005

Problème

Tous les soirs dans les journaux d’événements vous constatez cet avertissement:

Failed to connect to server. Error: 0x80070005

2014-08-03_16-37-25

En revanche vous n’avez pas les erreurs DCOM généralement associées.

Solution

  1. Rendre temporairement administrateur local le compte admin de la ferme (celui qui démarre le service SharePoint Timer)
  2. Via le prompt PowerShell de SharePoint: Get-SPProduct -local
  3. Via le prompt PowerShell de SharePoint: (get-spserver $env:computername).NeedsUpgrade
  4. Lancer manuellement le travail du timer qui génère cette alerte: Get-SPTimerJob job-admin-product-version | Start-SPTimerJob
  5. Vérifier que cette erreur n’est plus présente dans les journaux après son exécution
  6. Enlever le compte des administrateurs locaux
  7. Redémarrer le service SharePoint Timer
  8. Lancer manuellement le travail du timer qui génère cette alerte: Get-SPTimerJob job-admin-product-version | Start-SPTimerJob
  9. Vérifier que cette erreur n’est plus présente dans les journaux après son exécution

Windows – compteur de performance – unable to add these counters

Problème

Soudainement, un de mes serveurs Windows 2012 a eu son compteur de performance réseau HS. En lançant perfmon sur le serveur:

2014-08-20_21-49-38

 

Solution

Lancer lodctr /R ne résous pas le problème. Le compteur est là mais en fait il est désactivé. En lançant lodctr.exe /Q:

[Tcpip] Performance Counters (Disabled)
 DLL Name: %SystemRoot%\System32\Perfctrs.dll
 Open Procedure: OpenTcpIpPerformanceData
 Collect Procedure: CollectTcpIpPerformanceData
 Close Procedure: CloseTcpIpPerformanceData

 

Il suffit donc de l’activer de nouveau:

lodctr.exe /E:Tcpip

 

L’histoire ne dit pas ce qui l’a désactivé au départ…

 

 

Microsoft Project – livrable – fichiers srchui.dll et jscript.dll

Depuis Microsoft Project 2010 et 2013, en utilisant le menu de gestion des livrables, vous obtenez:

23-03-2014 12-09-39Ce message qui semble venir d’outre tombe de la version 2003 apparaît au lieu du panneau latéral.

Inutile de les chercher sur votre machine, vous ne les avez certainement pas.

C’est en fait un problème avec la zone « Internet » de internet explorer, même si votre serveur Project est dans la zone « intranet ».

La zone internet ne doit pas être avec le curseur au maximum en haut, sinon les livrables Project ne fonctionnent plus.

26-03-2014 07-43-13

Le tout même sur Windows Server 2012 R2 + Project 2013 SP1 + IE 11 complètement à jour…

 

 

SharePoint/Project 2013 SP1 – Configuration wizard

Après avoir déployé le Service Pack 1 de SharePoint/Project 2013, il faut passer le configuration wizard. Dans le cas présent, il échouait sur tous les noeuds avec la même erreur dans le log:

SyncUpgradeTimerJob: sleeping for 10 seconds
SyncUpgradeTimerJob: sleeping for 10 seconds
SyncUpgradeTimerJob: Upgrade timer job failed. Return -1.
The exclusive inplace upgrader timer job failed.

 

Etape 1 – autre log

Un autre log est beaucoup plus utile, au même endroit, il porte le nom upgrade-date-blahblah-error.log:

Exception: The operation cannot be performed on database "WSS_UsageApplication" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session or in an availability group.  ALTER DATABASE statement failed

Ou alors en utilisant la commande upgrade-spfarm:

29-03-2014 12-55-19

 

Solution

Supprimer le miroir ou always-on le temps de l’upgrade sur cette base.

 

 

RDP 2012(R2) – session collection – profile disk – 800391163

En créant une collection de session sous Windows 2012/2012R2, et en spécifiant un partage pour stocker les profils, vous rencontrez l’erreur 800391163:

rdp2012_session_profile_disk_800391163

Lors de la configuration, un des serveurs RDP va créer le modèle de profil avec sont compte local système:

rdp2012_session_profile_disk_procmon

En détail:

rdp2012_session_profile_disk_procmon2

Bien que vous ayez donné les droits NTFS aux comptes ordinateurs, cela ne passe toujours pas.

Il faut donner « everyone » en « full control » au niveau du partage, « change » ne suffit pas:

rdp2012_session_profile_disk_share

Et voilà une affaire de résolue ^^